![Использовать параметры в Power Query](https://rvso.com/image/1520081/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%20%D0%B2%20Power%20Query.png)
Пожалуйста, помогите мне разобраться, как параметризовать Power Query.
Я создал запрос PowerQuery, который запрашивает веб-сервис для определенных данных и манипулирует ими правильным образом. Допустим, я запрашиваю систему управления задачами для моих сегодняшних задач. Запрос может выглядеть примерно так:
Web.Contents("http://intranet/tasks?assignee=John", [Content=Text.ToBinary("")]),
Все работает нормально, но я хочу поделиться этой рабочей книгой с этим запросом со своими коллегами, чтобы они могли использовать ее для своих задач.
Web.Contents("http://intranet/tasks?assignee={INPUT HERE}", [Content=Text.ToBinary("")]),
В идеале я хочу, чтобы где-то был параметр под названием «Assignee» (например, в ячейке рабочей книги). Я хочу, чтобы пользователь этой рабочей книги мог ввести своего исполнителя, к которому он хочет сделать запрос, например, Питер, так, чтобы при обновлении данных запрос использовал его параметр следующим образом
Web.Contents("http://intranet/tasks?assignee=Peter", [Content=Text.ToBinary("")]),
Я бы не хотел, чтобы они открывали редактор PowerQuery и редактировали код запроса, потому что наши пользователи будут до смерти напуганы, делая это, и, вероятно, сделают ошибки. Ячейка в рабочей книге для выбора назначенного лица, я думаю, является наиболее удобным подходом.
Возможно ли это? Если да, то как?
Спасибо
решение1
Я нашел это решение в Интернете, и это именно то, что я искал.
Создайте новый запрос, откройте расширенный редактор и вставьте следующий код:
let GetValue=(rangeName) =>
let
name = Excel.CurrentWorkbook(){[Name=rangeName]}[Content],
value = name{0}[Column1]
in
value
in GetValue
Сохраните его, и теперь у вас есть функция запроса, которую вы можете использовать в другом запросе, подобном этому:
GetValue("Password")
Он будет искать в рабочей книге диапазон под названием «Пароль» и брать значение первой ячейки в этом диапазоне.
решение2
Вы можете использовать Query
запись для передачи параметров. Если значение ячейки сохранено в предыдущем шаге Name
, вы можете добавить новый шаг с помощью кнопки fx в строке формул и добавить следующую формулу:
= Web.Contents("http://intranet/tasks", [Content=Text.ToBinary(""), Query=[assignee = Name]])
Если у них включены уровни конфиденциальности, они увидят запрос на уровень конфиденциальности. Они могут либо назначить соответствующие уровни конфиденциальности (возможно, оба уровня организационных в данном случае), либо отключить уровни конфиденциальности в диалоговом окне «Параметры».