Перейти к содержимому

Июнь 2023

Power Query вызывает источник больше раз, чем вы ожидаете

В прошлый раз мы рассмотрели, как можно реализовать свёртывание запроса с помощью Table.View. Мы разобрались, почему нельзя однозначно ответить на вопрос «какие функции языка М сворачиваются?». Ответ зависит от версии Power Query, коннектора данных, аргументов функции и даже набора внешних данных, к которым осуществляется доступ.

Как вы думаете, Power Query взаимодействует с каждым внешним источником при обработке выражения только один раз? Гарантируется ли получение одинаковых результатов: а) при обработке выражения локально PQ, б) частичной свёртке в источник, в) полной свёртке?[1]

Подробнее »Power Query вызывает источник больше раз, чем вы ожидаете

Язык М Power Query. Свёртывание запросов

При свёртывании запроса Power Query принимает выражение M и преобразует его частично или полностью в собственный язык запросов или язык запросов источника данных (например, перевод M в T-SQL или в запрос OData), а затем просит источник выполнить этот запрос. Вы написали код M, но свёртывание запроса выгрузило некоторую часть выражения во внешний источник данных, переписав логику M на родной язык источника.[1]

Свёртывание запросов — это ключевая концепция в экосистеме Power Query. Она создает потенциал для значительного повышения производительности. Благодаря таким механизмам, как индексы и разбиение данных в памяти по страницам, источник данных часто находит нужные данные гораздо эффективнее, чем при потоковой передаче необработанных строк из источника в Power Query для локальной обработки.

Подробнее »Язык М Power Query. Свёртывание запросов

Язык М Power Query. Управление глобальной средой, замыкание

В прошлый раз мы узнали, что код М обычно вычисляется в глобальной среде, состоящей из всех общих членов разделов и стандартной библиотеки. Кроме того, обычно мы не можем вводить дополнительные идентификаторы непосредственно в эту глобальную среду. Обычно… но не всегда! Сегодня мы узнаем об исключениях.

Но и это еще не всё. Знаете ли вы, что у M есть механизм для запоминания того, как получить доступ к переменным, которые позже выйдут за рамки видимости? Этот механизм называется замыканием. Он особенно полезен при генерации функций. Замыкание позволяет создавать объектоподобную конструкцию, которая поддерживает внутреннее частное состояние (private state) и взаимодействует с ней через общедоступный интерфейс (public interface; что-то вроде объекта из объектно-ориентированного программирования!).[1]

Подробнее »Язык М Power Query. Управление глобальной средой, замыкание

Язык М Power Query. Области определения идентификаторов и секции

Одно и то же имя идентификатора (например, имя переменной, поля и т.п.) в запросе Power Query может быть определено несколько раз. Если вы используете имя идентификатора, на какое из этих определений будет указывать ссылка? В этом посте мы узнаем, как M разбирается с этим. Мы также рассмотрим разделы – обычно скрытые «фреймы», лежащие в основе организации выражений, составляющих код Power Query.[1]

Рис. 1. Описание члена раздела, хранящимся в литеральном атрибуте Description

Подробнее »Язык М Power Query. Области определения идентификаторов и секции

Fantasy Premier League. Выбор капитана

В первой заметке цикла я рассказал, что ряд менеджеров Fantasy Premier League демонстрирует высокие результаты на протяжении многих сезонов. Я выделил менеджеров, входящих в ТОР-10k по итогам пяти сезонов 2017/2018–2021/22 (элиту), а также группу сравнения – аккаунты, отобранные случайным образом (поляну). Далее я показал, какие возможности для извлечения данных с сайта Fantasy Premier League предоставляет API и Excel Power Query. В третьей заметке я исследовал различия между элитой и поляной в выборе команды к первому туру. В четвертой заметке показал отличия в трансферном поведении. В пятой заметке рассказал о игре фишками. Сейчас исследую выбор капитана в сезоне 2022/23.

Выбирая капитана в первом туре, менеджеры ориентировались на итоги предыдущего 2021/22 сезона:

Рис. 1. Выбор капитана в GW1

Подробнее »Fantasy Premier League. Выбор капитана

Fantasy Premier League. Игра фишками

В первой заметке цикла я рассказал, что ряд менеджеров Fantasy Premier League демонстрирует высокие результаты на протяжении многих сезонов. Я выделил менеджеров, входящих в ТОР-10k по итогам пяти сезонов 2017/2018–2021/22 (элиту), а также группу сравнения – аккаунты, отобранные случайным образом (поляну). Далее я показал, какие возможности для извлечения данных с сайта Fantasy Premier League предоставляет API и Excel Power Query. В третьей заметке я исследовал различия между элитой и поляной в выборе команды к первому туру. В четвертой заметке показал отличия в трансферном поведении. Сейчас исследую игру фишками в сезоне 2022/23.

Но для начала посмотрим, как закончили сезон элита и поляна.

Рис. 1. Распределение результатов элиты и поляны по итогам сезона 2022/23

Подробнее »Fantasy Premier League. Игра фишками