报表系统中怎么样动态编辑表头_在Power BI中利用DAX增强报表易读性

文/陆文捷

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

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

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

07c93516ed77485b80f526d933f0586e.png

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

54e14cfc90caa7f83e9ec06e0a667275.png

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

8d36fd94feb124ec4725f46203a7c087.png

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

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

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

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

度量值代码如下:

1f7049119af703aba38a4c30dfb25576.png

这个度量值的逻辑是: 

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

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

0243720b63f05e03db6b8262e3a17b14.png

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

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

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

b3d45ab5e7c7299f729feac75911dd70.png

至此DAX函数构建完成。

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

41cac44f4753cc587d442c142e30ded6.png

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

f951e061e5cb8b3bbb35a9d6a61e3a41.png

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

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

总结


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

参考文章:

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

4486744b9867d77447f5b01a9d562452.png

b4dde444c965cebb1b2f0e4ff3558f78.png 0067db3ee73dd75912da787695f66ce2.png 如果你刚开始学习Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。 成为PowerBI星球会员 ,获取更多学习资源 044e53e54b9d8fdc3b7fb860c2d1125c.png ↑ 扫码加入,和2.3k+ 学习者一起成长
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值