Применение параметров RelativePath и Query Options вместе с функцией Web.Contents() в коде Power Query и Power BI

Текст представляет собой адаптированный перевод статьи Криса Вебба, оригинал — Using The RelativePath And Query Options With Web.Contents() In Power Query And Power BI M Code.

Об авторе

Крис Вебб (Chris Webb) — независимый эксперт, консультант по технологиям Analysis Services, MDX, Power Pivot, DAX, Power Query и Power BI. Его блог — это кладезь информации на тему перечисленных технологий. Вот уже более 10 лет он пишет про BI-решения от Microsoft. Количество его статей перевалило за 1000! Также Крис выступает на большом количестве различных конференций вроде SQLBits, PASS Summit, PASS BA Conference, SQL Saturdays и участвует в различных сообществах.
Крис любезно разрешил нам переводить его статьи на русский язык. И это одна из них.

Применение параметров RelativePath и Query Options вместе с функцией Web.Contents() в коде Power Query и Power BI

Функция Web.Contents() — это ключ для получения данных с веб-страниц и от веб-сервисов. Она имеет множество параметров, облегчающих построение URL-адреса и вызов веб-служб, но они плохо документированы.

Рассмотрим следующий адрес:

https://data.gov.uk/api/3/action/package_search?q=cows

По нему вызываются api служба метаданных для адреса https://data.gov.uk/. Который является порталом открытых данных правительства Великобритании. Ответ приходит как документ JSON, представляющий набор данных, где встречается слово cows (коровы). Это легко проделать при помощи функции Web.Contents(), например, так:

Web.Contents(
 "https://data.gov.uk/api/3/action/package_search?q=cows"
) 

Однако вместо записи длинного адреса, что само по себе может потребовать нескольких шагов, можно применить параметры RelativePath (относительный путь) и Query (запрос) функции Web.Contents(). Они передаются вторым параметром как поля записи. RelativePath добавляет текст к первому параметру, а Query позволяет настроить параметры запроса. Для нашего примера, базовый адрес будет https://data.gov.uk/api, а параметры можно настроить так:

Web.Contents(
 "https://data.gov.uk/api", 
 [
  RelativePath="3/action/package_search", 
  Query=[q="cows"]
 ]
) 

RelativePath просто добавляет текст 3/action/package_search к базовому адресу. Второй параметр – единственное поле q, равное cows.

Для задания мультизапроса добавим поля к записи:

Web.Contents(
    "https://data.gov.uk/api", 
    [
        RelativePath="3/action/package_search", 
        Query=
        [
            q="cows", 
            rows="20"
        ]
    ]
)  

Этот запрос возвращает 20 строк, а не 10 по умолчанию:

https://data.gov.uk/api/3/action/package_search?q=cows&rows=20

Очевидно, что применение этих параметров облегчает построение адреса и делает код яснее. Кроме этого есть и другие преимущества. О них мы собираемся рассказать в другой статье.

Примечание: на момент написания статьи выявлен баг, а именно двойное добавление значения RelativePath при повторном использовании функции Web.Page(). Есть надежда, что это скоро исправят.

Следующая статья
Предыдущая статья

Комментирование закрыто.

Открыт набор на наш новый онлайн-курс “R для интернет-маркетинга!”

Набор на новый поток курса по Power BI

Подпишитесь на нашу рассылку, чтобы не пропустить новые статьи!

Подписка на рассылку NeedForData

Бесплатная шпаргалка по визуализации
Плакат Как что визуализировать
Сертификаты студентов курсов NeedForData.ru

© 2018    NeedForData