1. Подключение и продвинутое преобразование данных в Power Query
Качественный дашборд начинается не с красивых графиков, а с чистых и правильно структурированных данных. В Power BI за этот этап отвечает Power Query — встроенный ETL-инструмент (Extract, Transform, Load — Извлечение, Преобразование, Загрузка). Если представить создание отчета как приготовление блюда в ресторане, то Power Query — это кухня, где сырые ингредиенты моют, чистят и нарезают, прежде чем передать шеф-повару (языку DAX) для создания кулинарного шедевра.
Подключение к продвинутым источникам данных
Базовые отчеты часто строятся на одном-двух файлах Excel. Однако в реальной бизнес-среде данные разбросаны по множеству систем: базам данных SQL, облачным CRM, веб-API и локальным папкам.
Одним из самых мощных способов автоматизации является подключение к папке. Представьте, что каждый месяц региональные менеджеры присылают вам отчеты о продажах в формате CSV. Вместо того чтобы вручную импортировать каждый новый файл и копировать данные, вы можете указать Power Query путь к папке.
При таком подключении Power Query считывает метаданные всех файлов в директории. Вы можете отфильтровать их по расширению (например, оставить только .csv) или по названию (например, файлы, содержащие слово "Sales"). Затем система автоматически объединит содержимое всех файлов в одну таблицу. Когда в следующем месяце в папку добавят новый файл, вам будет достаточно нажать кнопку «Обновить» в Power BI, и новые данные мгновенно подтянутся в модель.
Слияние и Добавление: архитектура объединения данных
Когда данные поступают из разных источников, их необходимо объединить. В Power Query для этого существуют две фундаментально разные операции: Добавление (Append) и Слияние (Merge).
Добавление запросов (Append)
Эта операция используется, когда у вас есть таблицы с одинаковой структурой (одинаковыми столбцами), и вы хотите объединить их данные по вертикали.
> Добавление похоже на складывание кирпичей друг на друга: вы увеличиваете количество строк, но структура столбцов остается прежней.
Пример: у вас есть таблица Продажи_2022 (10 000 строк) и Продажи_2023 (15 000 строк). При добавлении вы получите одну таблицу на 25 000 строк. Если в одной из таблиц есть столбец, которого нет в другой, Power Query создаст его в итоговой таблице, заполнив пустые ячейки значением null.
Слияние запросов (Merge)
Слияние применяется, когда нужно обогатить одну таблицу данными из другой по горизонтали. Для этого требуется ключевой столбец — общий идентификатор, который есть в обеих таблицах.
Пример: в таблице Продажи есть столбец ID_Клиента, но нет имени клиента. В таблице Клиенты есть и ID_Клиента, и Имя. Выполняя слияние по ключу ID_Клиента, вы подтягиваете имена покупателей к транзакциям.
| Характеристика | Добавление (Append) | Слияние (Merge) |
| :--- | :--- | :--- |
| Направление | Вертикальное (добавляются строки) | Горизонтальное (добавляются столбцы) |
| Условие | Одинаковая структура столбцов | Наличие общего ключа (ID) |
| Аналог в SQL | UNION ALL | JOIN (Left, Inner, Right) |
| Аналог в Excel | Копирование и вставка снизу | Функция ВПР (VLOOKUP) |
!Схема операций объединения данных: Добавление (Append) и Слияние (Merge)
Отмена свертывания столбцов (Unpivot)
Одной из самых частых проблем при импорте данных из Excel является их «широкий» формат, удобный для чтения человеком, но совершенно непригодный для анализа в Power BI.
Представьте таблицу бюджета, где в первом столбце указана статья расходов, а далее идут 12 столбцов с названиями месяцев (Январь, Февраль, Март и т.д.), в которых записаны суммы.
Если загрузить такую таблицу в Power BI, вы не сможете создать срез (фильтр) по месяцам или написать универсальную меру на DAX для подсчета суммы, так как каждый месяц является отдельным столбцом. Данные необходимо нормализовать — перевести из «широкого» формата в «длинный».
Для этого используется функция Отмена свертывания столбцов (Unpivot). Выделяете столбцы с месяцами и применяете операцию. Power Query преобразует их в два новых столбца: Атрибут (куда попадут названия месяцев) и Значение (куда попадут суммы). В результате таблица станет длиннее (количество строк умножится на 12), но теперь у вас будет единый столбец с датами, который можно связать с календарем и использовать в фильтрах.
Условные столбцы и извлечение данных
Часто исходные данные требуют категоризации или очистки прямо на этапе загрузки. Вместо того чтобы писать сложные формулы IF в DAX, лучше создать Условный столбец в Power Query. Это снижает нагрузку на модель данных.
Например, вам нужно сегментировать чеки. В интерфейсе условного столбца вы задаете логику простыми выпадающими списками:
Сумма больше 100 000 руб., то вывести "Крупный чек".Сумма больше 50 000 руб., то вывести "Средний чек".Также Power Query отлично справляется с извлечением текста. Если у вас есть столбец с артикулами вида FURN-CH-1024 (где FURN — категория, CH — подкатегория, 1024 — номер), вы можете использовать инструмент «Разделить столбец по разделителю» (в данном случае по дефису), чтобы мгновенно получить три отдельных столбца для детального анализа.
Оптимизация производительности: Свертывание запросов (Query Folding)
Когда вы работаете с большими объемами данных (миллионы строк), скорость обновления отчета становится критическим фактором. Здесь на сцену выходит концепция Свертывания запросов (Query Folding).
Свертывание запросов — это способность Power Query переводить шаги преобразования данных (фильтрацию, удаление столбцов, группировку) на родной язык источника данных (например, в SQL-запрос) и передавать их на выполнение серверу.
Почему это важно? Представьте, что в базе данных SQL хранится 100 миллионов записей о продажах, но для отчета вам нужны только данные за 2023 год (около 5 миллионов строк).
Если свертывание работает, Power Query отправляет серверу команду:
Сервер обрабатывает запрос и возвращает в Power BI только 5 миллионов строк. Это происходит быстро и не перегружает вашу оперативную память.
Если свертывание нарушено, Power Query скачивает все 100 миллионов строк на ваш компьютер и только потом начинает фильтровать их локально. Обновление отчета может занять часы или завершиться ошибкой нехватки памяти.
Как сохранить свертывание запросов
Не все операции поддерживают свертывание. Базовые правила оптимизации:
Проверить, работает ли свертывание, очень просто. В панели «Примененные шаги» кликните правой кнопкой мыши по шагу. Если пункт «Просмотреть собственный запрос» (View Native Query) активен, значит, свертывание работает. Если он выделен серым цветом — на этом шаге передача вычислений на сервер прервалась.
Язык M: взгляд под капот
Все действия, которые вы совершаете в графическом интерфейсе Power Query (нажатия кнопок, выбор фильтров), автоматически транслируются в код на функциональном языке M (Power Query Formula Language).
Для 90% задач достаточно визуального интерфейса. Однако понимание языка M открывает двери к продвинутой автоматизации. Открыв «Расширенный редактор» (Advanced Editor), вы увидите структуру запроса. Она всегда состоит из двух блоков: let (где пошагово описываются переменные и преобразования) и in (где указывается финальный результат, который будет выведен в таблицу).
Умение читать этот код позволяет быстро находить ошибки, копировать логику между разными проектами и создавать динамические параметры (например, чтобы путь к папке с файлами менялся в зависимости от того, кто открывает отчет).