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

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. Автозамены

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. Игра фишками

Крис Уэбб. Функция Csv.Document M Power Query

CSV-файлы часто используются в качестве источника данных для Power Query в Excel или Power BI Desktop. Однако документация Microsoft по функции Csv.Document() ограничена и в некоторых случаях неверна. В этой довольно длинной заметке я покажу вам столько возможностей этой функции, сколько мне удалось обнаружить.

Это перевод заметки Криса Уэбба. Повествование ведется от лица Криса. Мои примечания набраны с отступом.

Рис. 1. Простой CSV-файл

Подробнее »Крис Уэбб. Функция Csv.Document M Power Query

Функция Table.FromList M Power Query

Недавно столкнулся с неожиданной ошибкой в работе функции Table.FromList() языка M Power Query. Простой код…

Запрос1[1]

… не работает, и возвращает ошибку:

Рис. 1. Неожиданное поведение функции Table.FromList()

Подробнее »Функция Table.FromList M Power Query

Язык М Power Query. Метаданные

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

Предыдущая заметка  Следующая заметка

Возьмем, например, параметры. Они обрабатываются особым образом в пользовательском интерфейсе Microsoft Excel (и Power BI), но в самом Power Query они хранятся как обычные значения.

Рис. 1. Параметры в Microsoft Excel

Подробнее »Язык М Power Query. Метаданные