Всем привет!
Абсолютное большинство заказчиков очень активно работает с таблицами Excel, включая условное форматирование, разного рода спарклайны, светофоры и т.д. И если возможности условного форматирования в таблицах и матрицах уже несколько месяцев удовлетворяют большинство потребностей бизнес-пользователей (не считая того, что нельзя форматировать промежуточные итоги в матрицах), светофоры можно неплохо делать комбинацией Unichar() и условного форматирования, то , например, со спарклайнами немного помучиться.
В августе 2018 года команда Power BI добавила возможность задавать категорию данных для мер. На мой взгляд эта очень важное обновление для всех, кто активно использует отчеты с таблицами в Power BI. Давайте посмотрим почему.
В этой части рассмотрим способ добавления индикаторов в матрицу/таблицу без задействования внешних изображения?
Дано: Матрица, в которой показаны сравнение продаж с прошлым годом в разрезе штатов и городов. Шеф просит добавить индикаторы.
Решение: Шаг 1. Добавляем меру, которая в зависимости от входных условий возвращает изображение в формате svg нужного цвета.
KPI_simple = //Укажите меру. на основании которой будет определяться цвет VAR SourceMeasure = [%Total_with_Tax_PY_Var] //Здесь можно изменить цвета индикатора. // Можно указывать как HEX-коды. // так и названия цветов на английском - red. yerllow. green и т.тд. VAR Color = SWITCH ( TRUE (); SourceMeasure < 0; "#cc3232"; SourceMeasure < 0,25; "#e7b416"; "#99c140" ) VAR Size = 30 // определяет размер SVG изображения в пикселях //Формируем SVG -изображение VAR Output_circle = "data:image/svg+xml;utf8," & "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='" & Size & "' height='" & Size & "'>" & "<circle cx='" & Size / 2 & "' cy='" & Size / 2 & "' r='" & Size / 2 & "' fill='" & Color & "' stroke='none' stroke-width='3'/>" & "</svg>" RETURN /*Логику HASONEVALUE стоит подкорректировать в случае. если планируется использовать матрицу с промежуточными итогами. Внутри HASONEVALUE должен присутсвовать столбец. который находится на нижнем уровне иерархии. В противном случае вместо кружка в подитогах будет отображаться код SVG элемента*/ IF ( HASONEVALUE ( 'Cities'[City] ) && SourceMeasure <> BLANK (); Output_circle; BLANK () )
Шаг 2. Кликаем на созданную меру, на вкладке «Моделирование» находим пункт «Категория данных», выбираем «URL-адрес изображения».
Шаг 3. Добавляем меру в матрицу
Более сложная мера, которая возвращает разные изображения для разных состояний:
KPI_3_position = //Укажите меру. на основании которой будет определяться цвет VAR SourceMeasure = [%Total_with_Tax_PY_Var] //Здесь можно изменить цвета индикатора. // Можно указывать как HEX-коды. // так и названия цветов на английском - red. yerllow. green и т.тд. VAR Color = SWITCH ( TRUE (); SourceMeasure < 0; "#cc3232"; SourceMeasure < 0,25; "#e7b416"; "#99c140" ) VAR Size = 30 // определяет размер SVG изображения в пикселях //Формируем SVG -изображение VAR Circle = "<circle cx='" & Size / 2 & "' cy='" & Size / 2 & "' r='" & Size / 2 & "' fill='" & Color & "' stroke='none' stroke-width='3'/>" VAR Rect = "<rect width='" & Size & "' height='" & Size & "' fill='" & Color & "' />" VAR Triangle = "<polygon points='0.0 " & Size / 2 & "." & Size & "." & Size & ".0' fill='" & Color & "'/>" VAR Shape_ = SWITCH ( TRUE (); SourceMeasure < 0; Triangle; SourceMeasure < 0,25; Rect; Circle ) //Задаем логику выбора изображения в зависимости от состояния показателя VAR Output = "data:image/svg+xml;utf8," & "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='" & Size & "' height='" & Size & "'>" & Shape_ & "</svg>" RETURN /*Логику HASONEVALUE стоит подкорректировать в случае. если планируется использовать матрицу с промежуточными итогами. Внутри HASONEVALUE должен присутсвовать столбец. который находится на нижнем уровне иерархии. В противном случае вместо кружка в подитогах будет отображаться код SVG элемента*/ IF ( HASONEVALUE ( 'Cities'[City] ) && SourceMeasure <> BLANK (); Output; BLANK () )
Скачать пример можно здесь.