在Power BI中利用DAX增强报表易读性

文/陆文捷

物流供应链优化分析师,Power BI爱好者,知乎:Beethovenist

Power BI的DAX不但能用来动态敏捷计算解决业务问题,还能控制可视化图表的展现,可谓里外一把抓的能手。本文通过一个示例,来体验DAX别样的威力吧~

预设场景:建立一个订单ID-产品名称-订购数量的明细。Power BI的默认显示样式,不论是表格还是矩阵,无外乎隔行交错显示,像下图这样:

或者表头+表体+汇总行的三段式分布,像这样:

这样的布局在视觉上无法一目了然地定位每个订单ID的明细。通过DAX,则可以实现这样的排布,

相同订单ID的背景颜色一致并交错分布,这样就可以更直观按颜色来区分不同ID的订单明细,是不是很清晰呢?

实现的原理是利用DAX构建度量值,分两步实现:

1、对订单ID按字段值进行排名
2、用上一步的排名度量值的奇偶性定义报表字段的背景色

下面进入详细的实现步骤,对订单ID排名需要用到RANKX函数,同学们可以参考星主的文章学习。

度量值代码如下:

这个度量值的逻辑是:

1.通过VAR构建所选订单ID的中间表,作为RANKX的第一参数
2.通过VAR获取当前上下文的订单ID
3.获取对当前订单ID在报表中的订单ID 排名。这里用到了RANKX的第三参数,也就是当前订单ID值,该ID会在订单ID列中迭代获相应排名

将这个度量值放到矩阵里看看效果:

接着用排名数值是否可以整除2定义奇偶性:

订单ID.ColorIndex = MOD ( [Rank.订单ID], 2 )

其返回结果是0(偶数)或1(奇数):

至此DAX函数构建完成。

最后就是利用条件格式,来编辑报表字段背景颜色,按0或1指定两种不同颜色:

稍显麻烦的是每一个报表字段都得按同样的步骤设置一次,希望微软在后续的版本更新里可以提供全字段设置的选项。

全部定义之后就能实现上面介绍的按不同的订单ID来交错显示背景颜色了。

类似的,还可以对字体,图标等进行动态的定义控制,来实现默认类型之外的布局风格。

总结

本文的DAX驱动可视化原理类似于Excel借助辅助列设置条件格式的方法。通过构建中间表->按特定字段排名->建立辅助度量值并定义格式的步骤实现。实践中对RANKX的第三参数使用也加深了理解。伙伴们也可举一反三,实现更多灵活多变的控制。

参考文章:

https://www.sqlbi.com/articles/applying-color-banding-by-document-number-in-power-bi/
示例源数据来自于@BI佐罗老师PBI练习素材
(0)

相关推荐