M365Con 2027 – бесплатная онлайн-конференция · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Освоение контекста вычисления DAX: почему Power BI — это не просто Excel

By ·

При переходе от традиционных электронных таблиц к инструментам бизнес-аналитики многие аналитики попадают в удобную ловушку. Они полагают, что выражения анализа данных ведут себя так же, как обычные формулы в таблицах. Однако отношение к Power BI как к огромной книге Excel нередко приводит к неработающим отчетам, неожиданным цифрам и сильному разочарованию. Чтобы по-настоящему раскрыть потенциал с

Automatically translated with AI from the original post. Read the English original

Cover: Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]

При переходе от традиционных электронных таблиц к инструментам бизнес-аналитики многие аналитики попадают в удобную ловушку. Они полагают, что выражения анализа данных ведут себя так же, как стандартные формулы в таблицах. Однако отношение к Power BI как к огромной книге Excel нередко приводит к неработающим отчетам, неожиданным цифрам и сильному разочарованию. Чтобы по-настоящему раскрыть потенциал современной аналитики, необходимо разобраться в механике контекста вычисления. В этом подробном руководстве мы рассмотрим, почему семантические модели требуют иного образа мышления, разберем контекст строки и контекст фильтра и покажем, как повысить свои навыки моделирования данных.

Введение в контекст вычисления в Power BI

По своей сути Power BI построен на мощном реляционном движке, который обрабатывает данные иначе, чем традиционное программное обеспечение на основе ячеек. Когда вы пишете выражения на языке Data Analysis Expressions, ваши формулы не просто смотрят на статическую ячейку или фиксированную строку выше и ниже. Вместо этого они работают в невидимой среде, которая называется контекстом вычисления. Понимание этой среды — важнейший рубеж для любого разработчика отчетов. Без него вы фактически гадаете, почему числа меняются, когда вы перетаскиваете поле в визуальный элемент. Освоение контекста вычисления позволяет перекинуть мост между базовой отчетностью и продвинутой, корпоративного уровня бизнес-аналитикой.

Почему отношение к DAX как к Excel приводит к неработающим отчетам

Самое распространенное заблуждение среди новых разработчиков состоит в том, что формулы вычисляются последовательно, сверху вниз, точно так же, как в сетке электронной таблицы. В таблицах, если вы записываете формулу в ячейку C2, она вычисляет строку 2, потому что вы явно указали её на этом месте. Вычисления в электронных таблицах статичны и явны.

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

ЗаблуждениеОбъяснение
DAX работает как ExcelDAX работает в динамических и невидимых контекстах вычисления, в отличие от построчного вычисления в Excel.
Меры всегда возвращают правильные значения во всех визуальных элементахМеры могут давать разные результаты в разных визуальных элементах из-за контекста фильтра, что приводит к путанице.
Функция ALL() удаляет все фильтрыНеразборчивое использование ALL() может привести к игнорированию необходимых фильтров и, как следствие, к неверным результатам в отчетах.

Разбор контекста строки: вычисления запись за записью

Чтобы освоить контекст вычисления, сначала нужно понять его два основных компонента: контекст строки и контекст фильтра. Начнем с контекста строки. Проще говоря, контекст строки активен всякий раз, когда выражение вычисляется для одной конкретной записи в каждый момент времени.

Когда возникает контекст строки? В основном в двух сценариях: при создании вычисляемых столбцов и при использовании функций-итераторов (часто называемых «X-функциями», например SUMX, AVERAGEX или FILTER). Например, если вы создаете вычисляемый столбец «Total Line Cost», перемножая Quantity и Unit Price, Power BI создает контекст строки для каждой отдельной записи в этой таблице. Он проходит по таблице строка за строкой, вычисляет умножение для каждой строки и физически сохраняет результат в вашей модели.

Однако вычисляемые столбцы потребляют память и увеличивают размер файла. Поэтому опытные разработчики предпочитают меры. Когда вы используете функцию-итератор вроде SUMX, вы программно и временно создаете контекст строки. SUMX проходит по таблице строка за строкой, вычисляет выражение для каждой строки, а затем суммирует эти промежуточные результаты. Понимание контекста строки помогает применять вычисления в нужный момент: использовать столбцы для статичных атрибутов уровня строки, а меры — для динамических агрегаций.

Разбор контекста фильтра: как визуальные элементы и срезы формируют результаты

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

Представьте простую меру, которая вычисляет общий объём продаж. Если вывести эту меру на пустую карточку, контекст фильтра будет охватывать всю модель данных, и вы получите глобальные продажи за всё время. Но как только вы перетащите столбец «Region» в гистограмму рядом с этой мерой, контекст фильтра существенно меняется. Для каждого столбца диаграммы Power BI автоматически применяет скрытый фильтр по конкретному региону. Движок вычисляет меру продаж только для строк, относящихся к Северной Америке, затем только для Европы и так далее.

Именно контекст фильтра делает ваши дашборды интерактивными и динамичными. Срезы позволяют пользователям мгновенно менять этот контекст, фильтруя данные по диапазонам дат, категориям товаров или сегментам клиентов. Умение управлять контекстом фильтра с помощью мощных функций, таких как CALCULATE, отделяет начинающих создателей отчётов от настоящих экспертов по семантическим моделям.

Соединяем разрозненное: освоение контекста вычисления для продвинутой аналитики

Когда вы поймёте, как взаимодействуют контекст строки и контекст фильтра, можно переходить к построению сложной бизнес-логики. Классический продвинутый приём — переход контекста. Переход контекста происходит, когда вы используете контекст строки (внутри вычисляемого столбца или итератора) и вызываете функцию CALCULATE. При выполнении CALCULATE текущий контекст строки автоматически преобразуется в эквивалентный контекст фильтра.

Это позволяет задавать сложные вопросы, например: «Для каждой категории товаров в этой таблице каков общий объём продаж товаров, цена которых превышает заданный порог?» Управляя тем, как фильтры распространяются, с помощью таких функций, как KEEPFILTERS, ALLEXCEPT, или переменных, вы оптимизируете вычисления и по точности, и по скорости.

Кроме того, правильно построенная модель по схеме «звезда» обеспечивает плавное распространение контекста фильтра от таблиц измерений к таблицам фактов. Когда связи и контексты вычисления работают согласованно, ваши отчёты загружаются быстро, остаются простыми в поддержке и стабильно дают надёжные бизнес-выводы.

Итоги и следующие шаги для разработчиков Power BI

Освоение контекста вычисления требует времени, практики и готовности отказаться от привычек работы с электронными таблицами. Понимая, как контекст строки вычисляет отдельные записи и как контекст фильтра формирует ваши визуальные элементы, вы получаете полный контроль над семантическими моделями. Чтобы глубже разобраться в теме и услышать мнения экспертов об архитектуре бизнес-аналитики, обязательно послушайте связанный эпизод подкаста Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]. Продолжайте практиковаться, проверяйте формулы с помощью таких инструментов, как DAX Studio, и общайтесь с мировым сообществом, чтобы ускорить свой путь в аналитике!

Power BI Microsoft Excel DAX Agent skill

Related articles

RSS