Use os parâmetros no Power Query

1

Por favor, ajude-me a descobrir como parametrizar uma Power Query.

Eu construí uma consulta do PowerQuery que consulta um webservice para determinados dados e os manipula da maneira correta. Digamos que eu consulte um sistema de gerenciamento de tarefas para as tarefas de hoje. Uma consulta pode parecer algo como:

Web.Contents("http://intranet/tasks?assignee=John", [Content=Text.ToBinary("")]),

Funciona bem, mas quero compartilhar esta pasta de trabalho com essa consulta com meus colegas, para que eles possam usá-la em suas próprias tarefas.

Web.Contents("http://intranet/tasks?assignee={INPUT HERE}", [Content=Text.ToBinary("")]),

Idealmente, eu quero um parâmetro em algum lugar chamado "Responsável" (em uma célula de uma pasta de trabalho, por exemplo). Quero que um usuário desta pasta de trabalho possa inserir seu responsável pelo qual deseja consultar, por exemplo, Peter, para que, quando eles atualizarem os dados, a Consulta use seu parâmetro como este

Web.Contents("http://intranet/tasks?assignee=Peter", [Content=Text.ToBinary("")]),

Eu não gostaria que eles abrissem o editor do PowerQuery e editassem o código de consulta, porque nossos usuários terão medo de fazê-lo e provavelmente cometerão erros. Uma célula na pasta de trabalho para selecionar o responsável, acho, é a abordagem mais útil.

Isso é possível? Se sim - como?

Obrigado

    
por artemb 27.01.2017 / 11:20

2 respostas

0

Eu encontrei esta solução na internet, que é exatamente o que eu estava procurando.

Crie uma nova consulta, abra o editor avançado e cole o seguinte código:

let GetValue=(rangeName) => 
    let
      name = Excel.CurrentWorkbook(){[Name=rangeName]}[Content],
      value = name{0}[Column1]
    in
      value
    in GetValue

Salve e agora você tem uma função de consulta que pode ser usada em outra consulta como essa:

GetValue("Password")

O que ele fará é procurar um intervalo chamado "Senha" na pasta de trabalho e obter o valor da primeira célula nesse intervalo.

    
por 10.02.2017 / 14:34
0

Você pode usar o registro Query para passar parâmetros. Se o valor da célula estiver armazenado na etapa anterior Name , você poderá adicionar uma nova etapa com o botão fx na barra de fórmulas e adicionar a seguinte fórmula:

= Web.Contents("http://intranet/tasks", [Content=Text.ToBinary(""), Query=[assignee = Name]])

Se eles tiverem níveis de privacidade ativados, eles verão um aviso de nível de privacidade. Eles podem optar por atribuir níveis de privacidade apropriados (talvez ambos, Organizacional, neste caso) ou podem desabilitar os níveis de privacidade na caixa de diálogo Opções.

    
por 27.01.2017 / 20:39