PowerBI 矩阵条件格式的高亮显示

2020-11-02 10:45:30 浏览数 (1)

在 PowerBI 中,矩阵的确是最强大而复杂的结构,为了突出显示各种信息,需要对内容来高亮显示。

这里就一起来看对矩阵的条件格式。

普通条件格式

常常需要在矩阵中高亮显示数字或是背景,PowerBI 默认给出了类似 Excel 的条件格式设置,如下:

可以用条件格式对背景色,字体颜色,数据条,图标和Web URL设置。如果打开条件格式,可以看到:

对于颜色的设置可以按照:色阶,规则,字段值进行。其中,前两者比较简单,可以点击自己来尝试。

字段值条件格式

用字段值来设置颜色更加灵活,复杂和强大。

这可以根据度量值的计算结果直接给出一个颜色值(甚至还可以带有透明度)。

用字段值设置条件格式的通用方法,用 PowerBI DAX 给出如下:

代码语言:javascript复制
Matrix.Color.Default = 
"#FF0000"

#FF0000给了颜色值。所以,所有的问题就转换成了:用 DAX 公式编写,在满足某种条件下,显示什么颜色值的问题。就是:

  • 如果,….,
  • 就显示,…的颜色

凡是可以用 DAX 公式表达出来的逻辑,就都可以设置颜色。

如果有什么颜色是无法设置的,不是颜色无法设置,而是分析师无法写出表示这种逻辑的 DAX 公式。

按照类别显示颜色

类别是静态不变的,以下用 PowerBI DAX 给出:

代码语言:javascript复制
Matrix.Color.按类别 = 
VAR _item = SELECTEDVALUE( 'Product'[Subcategory] )
RETURN IF( _item = "用品" , "#FF000050" )

效果如下:

这是最简单的方式,如果结合切片器选择,可以高亮多行。例如:

代码语言:javascript复制
Matrix.Color.按类别(多个) = 
VAR _item_list = VALUES( 'SubcategoryList'[Subcategory] )
VAR _item = SELECTEDVALUE( 'Product'[Subcategory] )
RETURN IF( _item IN _item_list , "#FF000050" )

得到:

这种设置可以通过选择来高亮固定的元素。

实现按值的大小高亮

很多情况下,我们需要来动态的对比值,让某些单元格来高亮。例如:可以对比所有值的平均值,并将大于或小于平均值的单元格分别高亮。用 PowerBI DAX 实现如下:

代码语言:javascript复制
Matrix.Color.按平均值 = 

// 按可能的分类构建平均值

VAR _t = CALCULATETABLE( SUMMARIZE( 'Order' , 'Product'[Category] , 'Product'[Subcategory] , Geo[Region] ) , ALLSELECTED( ) )
VAR _aver = CALCULATE( AVERAGEX( _t , [KPI] ) )
RETURN IF( [KPI] >= _aver , "#00FF0050" , "#FF000050" )

得到:

这里的颜色分成红绿,分别是基于对平均值的比对。当然,还可以根据自己的逻辑来进行调整,例如某列或其他计算逻辑。

实现阶梯透明色

人们对颜色比数字在直觉处理上更加敏感,所以用渐变色可以快速帮助眼睛锁定值的大小,用 PowerBI DAX 实现,如下:

代码语言:javascript复制
Matrix.Color.按透明度 = 

VAR _t = CALCULATETABLE( SUMMARIZE( 'Order' , 'Product'[Category] , 'Product'[Subcategory] , Geo[Region] ) , ALLSELECTED( ) )
VAR _max = CALCULATE( MAXX( _t , [KPI] ) )
VAR _o = IF( INT( ( [KPI] / _max ) * 100 ) = 100 , 99 , INT( ( [KPI] / _max ) * 100 ) )
RETURN  "#00FF00" & _o

得到:

这里的颜色处理使用了渐变,并以最大值最为基准来进行。

总结

矩阵以及表格的条件染色非常简单,根据业务逻辑用 DAX 编写公式,并直接给出颜色值,非常准确。大家可以用这个小技巧来优化下自己的报告看看。

在订阅了BI佐罗讲授的《BI进行时》课程区,可以下载本文案例。

0 人点赞