Применение параметров 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(). Есть надежда, что это скоро исправят.

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

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

Идет набор на курс “Power BI для интернет-маркетинга”

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

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

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

Бесплатная шпаргалка по визуализации
Плакат Как что визуализировать

Плакат Как что визуализировать

© 2018    NeedForData