Парсинг html-кода в Power Query
В связи с увлечением Fantasy Premier League меня заинтересовал рейтинг игроков на сайте livefpl.
Рис. 1. Web-страница с рейтингом игроков
В связи с увлечением Fantasy Premier League меня заинтересовал рейтинг игроков на сайте livefpl.
Рис. 1. Web-страница с рейтингом игроков
В прошлый раз мы рассмотрели, как можно реализовать свёртывание запроса с помощью Table.View. Мы разобрались, почему нельзя однозначно ответить на вопрос «какие функции языка М сворачиваются?». Ответ зависит от версии Power Query, коннектора данных, аргументов функции и даже набора внешних данных, к которым осуществляется доступ.
Как вы думаете, Power Query взаимодействует с каждым внешним источником при обработке выражения только один раз? Гарантируется ли получение одинаковых результатов: а) при обработке выражения локально PQ, б) частичной свёртке в источник, в) полной свёртке?[1]
Подробнее »Power Query вызывает источник больше раз, чем вы ожидаете
При свёртывании запроса Power Query принимает выражение M и преобразует его частично или полностью в собственный язык запросов или язык запросов источника данных (например, перевод M в T-SQL или в запрос OData), а затем просит источник выполнить этот запрос. Вы написали код M, но свёртывание запроса выгрузило некоторую часть выражения во внешний источник данных, переписав логику M на родной язык источника.[1]
Свёртывание запросов — это ключевая концепция в экосистеме Power Query. Она создает потенциал для значительного повышения производительности. Благодаря таким механизмам, как индексы и разбиение данных в памяти по страницам, источник данных часто находит нужные данные гораздо эффективнее, чем при потоковой передаче необработанных строк из источника в Power Query для локальной обработки.
В прошлый раз мы узнали, что код М обычно вычисляется в глобальной среде, состоящей из всех общих членов разделов и стандартной библиотеки. Кроме того, обычно мы не можем вводить дополнительные идентификаторы непосредственно в эту глобальную среду. Обычно… но не всегда! Сегодня мы узнаем об исключениях.
Но и это еще не всё. Знаете ли вы, что у M есть механизм для запоминания того, как получить доступ к переменным, которые позже выйдут за рамки видимости? Этот механизм называется замыканием. Он особенно полезен при генерации функций. Замыкание позволяет создавать объектоподобную конструкцию, которая поддерживает внутреннее частное состояние (private state) и взаимодействует с ней через общедоступный интерфейс (public interface; что-то вроде объекта из объектно-ориентированного программирования!).[1]
Подробнее »Язык М Power Query. Управление глобальной средой, замыкание
Одно и то же имя идентификатора (например, имя переменной, поля и т.п.) в запросе Power Query может быть определено несколько раз. Если вы используете имя идентификатора, на какое из этих определений будет указывать ссылка? В этом посте мы узнаем, как M разбирается с этим. Мы также рассмотрим разделы – обычно скрытые «фреймы», лежащие в основе организации выражений, составляющих код Power Query.[1]
Рис. 1. Описание члена раздела, хранящимся в литеральном атрибуте Description
Подробнее »Язык М Power Query. Области определения идентификаторов и секции
CSV-файлы часто используются в качестве источника данных для Power Query в Excel или Power BI Desktop. Однако документация Microsoft по функции Csv.Document() ограничена и в некоторых случаях неверна. В этой довольно длинной заметке я покажу вам столько возможностей этой функции, сколько мне удалось обнаружить.
Это перевод заметки Криса Уэбба. Повествование ведется от лица Криса. Мои примечания набраны с отступом.
Рис. 1. Простой CSV-файл
Недавно столкнулся с неожиданной ошибкой в работе функции Table.FromList() языка M Power Query. Простой код…
Запрос1[1]
1 2 3 4 |
let source = Table.FromList({10, 20, 30, 40, 50}) in source |
… не работает, и возвращает ошибку:
Рис. 1. Неожиданное поведение функции Table.FromList()
Power Query позволяет прикрепить к значению сведения о нём. Обычно эти описательные фрагменты невидимы. Их присутствие не меняет поведение движка М. Однако код (ваш или чужой, например, функция стандартной библиотеки) может считывать и задавать эти нотации. Они известны как метаданные. Их можно использовать для передачи дополнительной информации, относящейся к значению. Метаданные применяются в информационных или диагностических целях. Они также могут быть задействованы в выражениях, поскольку метаданные определяют поведение значений.[1]
Предыдущая заметка Следующая заметка
Возьмем, например, параметры. Они обрабатываются особым образом в пользовательском интерфейсе Microsoft Excel (и Power BI), но в самом Power Query они хранятся как обычные значения.
Рис. 1. Параметры в Microsoft Excel
Это перевод статьи Криса Уэбба, дополненный моими комментариями с использованием Chat GPT (набраны с отступом). Повествование ведется от первого лица (Криса).
Ранее я писал в блоге о том, как устранять проблемы с обновлением веб-службы с помощью стороннего инструмента под названием Fiddler. Информация по-прежнему актуальна, но Fiddler — сложный инструмент. Установить его и дать правильные разрешения для просмотра всего, что ему нужно, непросто. К счастью, новая функция диагностики Power Query в Power BI (выпущенная в октябре 2019 г.) означает, что вам больше не нужно использовать Fiddler для такого рода работы. Полная информация о том, как использовать эту функцию, приведена здесь, но я подумал, что было бы полезно сосредоточиться на одном конкретном варианте ее использования.
Функция диагностики в Excel на момент публикации перевода не доступна.
Рис. 1. Запрет скачивания в фоновом режиме
Это перевод нескольких связанных статей Криса Уэбба, дополненный моими комментариями с использованием Chat GPT (набраны с отступом).
Функция Web.Contents() в языке M Power Query позволяет получать данных с веб-страниц и веб-служб и имеет ряд полезных, но плохо документированных опций, которые упрощают создание URL-адресов для вызовов веб-служб.
Рассмотрим следующий URL-адрес:
1 |
https://data.gov.uk/api/3/action/package_search?q=cows |
Это вызов API метаданных с сайта https://www.data.gov.uk/, портала открытых данных правительства Великобритании. По этому адресу возвращается документ JSON (рис. 1), в котором перечислены наборы данных, найденные при поиске по ключевому слову cows (коровы).
Рис. 1. Документ JSON, возвращаемый по Запросу 1; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке
Подробнее »Крис Уэбб. Параметры RelativePath и Query функции M Power Query Web.Contents()