21 марта 2025

🎨 Визуальные вычисления в Power BI: хакни условное форматирование

Data Analyst / BI Dev / SQL Dev Senior backend developer at USETECH Telegram: @aleksandripatov
Условное форматирование в Power BI теперь можно настроить без сложных DAX-конструкций. Рассказываем, как новые визуальные вычисления помогают создавать адаптивные и стильные отчеты, которые реагируют на любые изменения данных.
🎨 Визуальные вычисления в Power BI: хакни условное форматирование

Привет всем!

Я, Ипатов Александр, backend-разработчик в компании USETECH. В данном материале хочу затронуть тему визуальных вычислений в Power BI.

Но сначала хотел бы кратко рассказать о последних изменениях в языке DAX. В 2024 году было добавлено несколько новых функций, предназначенных для поддержки визуальных вычислений – функции, которые пока находятся в стадии предварительного просмотра в Power BI. Эти 12 функций нельзя использовать в мерах, вычисляемых в столбцах или таблицах – они работают только в визуальных вычислениях. Среди них: COLLAPSE, COLLAPSEALL, EXPAND, EXPANDALL, FIRST, ISATLEVEL, LAST, MOVINGAVERAGE, NEXT, PREVIOUS, RANGE и RUNNINGSUM.

Кроме того, Microsoft представила 14 новых функций категории INFO, четыре из которых (с префиксом INFO.VIEW) упрощают выполнение распространенных задач: INFO.VIEW.COLUMNS, INFO.VIEW.MEASURES, INFO.VIEW.RELATIONSHIPS и INFO.VIEW.TABLES. Остальные десять функций включают INFO.CALCDEPENDENCY, INFO.CATALOGS, INFO.CHANGEDPROPERTIES, INFO.EXCLUDEDARTIFACTS, INFO.FUNCTIONS, INFO.LINGUISTICMETADATA, INFO.PROPERTIES, INFO.STORAGETABLECOLUMNS, INFO.STORAGETABLECOLUMNSEGMENTS и INFO.STORAGETABLES.

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

Существует неоднозначное отношение к визуальным вычислениям. С одной стороны, несколько простых расчетов можно выполнить на визуализации легко и просто. С другой стороны, как только расчет становится немного сложнее, создание визуальных вычислений становится крайне трудным даже для опытных разработчиков DAX.

Тем не менее, визуальные вычисления невероятно удобны, когда речь идет о расчетах, которые напрямую связаны с визуализацией. Можно признаться, что каждая семантическая модель содержит меры с замысловатыми вызовами функций ISINSCOPE, HASONEVALUE и SELECTEDVALUE, единственная цель которых – это определить цвет шрифта или фона ячейки.

Начиная с версии Power BI за февраль 2025 года, визуальные вычисления можно использовать для управления условным форматированием. Для их использования необходимо знать несколько мелких деталей, но они определенно стоят того, чтобы их изучить.

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

🎨 Визуальные вычисления в Power BI: хакни условное форматирование
💻 Библиотека программиста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

Мы могли бы достичь этой цели с помощью обычной меры в модели. Создание такой меры само по себе является интересным упражнением и определенно стоит попытки, так как скрывает некоторые сложности. В указанной модели столбец Product[Category] сортируется по Product[Category Code]. Ниже написан вариант решения такого вопроса:

Мера в таблице Sales

Color =

VAR AvgValue =

AVERAGEX (

ALLSELECTED ( 'Product'[Category] ),

CALCULATE ( [Sales Amount],

ALLEXCEPT ( 'Product', 'Product'[Category] ) )

)

VAR Result =

IF ( [Sales Amount] >= AvgValue, "Green", "Red" )

RETURN

Result

В этой формуле есть несколько серьезных недостатков:

Во-первых, комбинация CALCULATE и ALLEXCEPT выглядит странно и нелегко найти для новичков в DAX. Подсказка: столбец Product[Category Code] присутствует в контексте фильтра и не переопределяется контекстным переходом внутри AVERAGEX.

Во-вторых, код работает, проверяя среднее значение по категории. Если пользователь изменит матрицу и, например, использует другой столбец для среза, цвет будет вычислен неточно.

С другой стороны, визуальное вычисление, которое вычисляет тот же цвет, написать намного проще:

Визуальное вычисление

Color =

VAR AvgValue =

AVERAGEX( ROWS, [Sales Amount] )

VAR Result =

IF( [Sales Amount] >= AvgValue, "Green", "Red" )

RETURN

Result

Оно не только проще в написании, но и не содержит ссылок на Product[Category]. Таким образом, оно работает на визуализации, срезанной по любому столбцу. Более того, вычисление остается в визуализации: оно не загрязняет семантическую модель бизнес-логикой, которая строго привязана к текущей визуализации.

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

В нашем сценарии визуальное вычисление Color является строкой. Нам нужно сообщить Power BI, что тип данных для визуального вычисления – Text.

Это можно сделать в форматировании визуализации в разделе Format | General | Data Format | Format Options.

🎨 Визуальные вычисления в Power BI: хакни условное форматирование

Принудительно установив тип данных на Text, можно использовать визуальное вычисление в разделе условного форматирования Sales Amount.

🎨 Визуальные вычисления в Power BI: хакни условное форматирование

И вот оно. Sales Amount теперь окрашен так, как мы хотим. Визуальное вычисление привязано к визуализации, но не к конкретному столбцу, используемому для среза. Изменение с Product[Category] на, скажем, Product[Brand], автоматически адаптирует форматирование к новому столбцу.

🎨 Визуальные вычисления в Power BI: хакни условное форматирование

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


Статьи по теме

Комментарии

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ