Шаги преобразования и язык M

Знакомимся с логикой Power Query: цепочка шагов и язык M за кулисами.

Power Query — инструмент подготовки данных, который записывает каждое действие как шаг и хранит всю цепочку как код на языке M.

Зачем чистить данные

Сырые данные почти всегда «грязные»: лишние столбцы, пустые строки, числа-как-текст, кривые даты, дубли. Если загрузить это в модель как есть, расчёты будут врать. Power Query — место, где данные приводят в порядок один раз, после чего очистка повторяется автоматически при каждом обновлении.

Применённые шаги

Главная идея Power Query — повторяемость. Каждое ваше действие (удалить столбец, отфильтровать строки, сменить тип) записывается в панель «Применённые шаги» (Applied Steps) справа. Это как макрос, но наглядный: вы видите всю историю и можете вернуться к любому шагу, отредактировать или удалить его. Когда придут новые данные, Power BI прогонит ту же цепочку шагов заново.

Источник
  └─ Повышенные заголовки
      └─ Изменённый тип
          └─ Удалённые столбцы
              └─ Отфильтрованные строки
                  └─ ✓ результат в модель

Язык M

Под капотом каждый шаг — это строка кода на функциональном языке M (Power Query Formula Language). Откройте «Расширенный редактор», и увидите всю цепочку как программу. Читать M полезно даже если вы не пишете его руками:

let
    Источник = Csv.Document(File.Contents("sales.csv"), [Delimiter=";"]),
    Заголовки = Table.PromoteHeaders(Источник),
    Типы = Table.TransformColumnTypes(Заголовки, {{"Сумма", type number}}),
    Фильтр = Table.SelectRows(Типы, each [Сумма] > 0)
in
    Фильтр

Видно главное свойство M: каждый шаг получает результат предыдущего (по имени) и возвращает новую таблицу. Конструкция let ... in ... объявляет шаги и указывает, какой из них вернуть.

M против DAX

Новички путают два языка Power BI. Запомните разделение труда:

M (Power Query)DAX
Когда работаетпри загрузке/обновлениипри расчёте визуала
Задачаподготовить таблицыпосчитать показатели
Где пишутредактор Power Queryмодель/отчёт
Стильпошаговый, функциональныйформулы как в Excel

Как работает под капотом

Когда Power BI обновляет данные, он не «помнит» результат прошлой очистки — он заново выполняет M-программу запроса от первого шага до последнего. Многие источники поддерживают query folding: Power Query умеет «свернуть» цепочку шагов обратно в один SQL-запрос и переложить работу на базу данных. Тогда фильтрация и группировка происходят на сервере, а в Power BI приходит уже готовый результат — это резко ускоряет обновление.

Частые ошибки

  • Чистить данные в самой модели/визуале. Подготовка — задача Power Query; DAX для этого не предназначен.
  • Удалять шаг из середины, ломая последующие. Шаги ссылаются друг на друга по имени — удаление может оборвать цепочку.
  • Убивать query folding. Некоторые операции «ломают сворачивание», и тогда вся очистка считается локально и медленно.

Итог

  • Power Query записывает действия как повторяемые шаги — основу автоматического обновления.
  • Каждый шаг — код на языке M; цепочку видно в «Расширенном редакторе».
  • M готовит данные при загрузке, DAX считает показатели при отображении — не путайте их роли.
Проверьте себя
1. Что записывается в панель «Применённые шаги»?
ADAX-меры
BКаждое действие очистки данных по порядку
CНастройки цвета визуалов
DПрава доступа
2. Чем M отличается от DAX?
AЭто одно и то же
BM готовит таблицы при загрузке, DAX считает показатели при отображении
CM считает меры, DAX чистит данные
DM работает только в Excel