上次我们介绍了如何使用 DAX 公式实现了动态排名,通过用户选择不同的维度或指标(如销售额、利润、订单量等),动态调整排名。
在实际操作中,大家可能会觉得 DAX 表达式比较复杂,数据越多时就会越复杂,有没有什么办法可以简化我们的计算呢?
当然有,我们可以使用视觉对象计算来优化这些 DAX 表达式,从而简化逻辑,让更多的小伙伴来理解并应用。
跟昨天的实现过程一样,我们需要两个参数表,一个是维度参数,一个是指标参数表。
维度参数表。
指标参数表。
同样的,还需要动态指标度量值。
动态指标 =
VAR vIndex =
SELECTEDVALUE ( '动态指标选择'[动态指标选择 个订单] )
RETURN
SWITCH (
vIndex,
0, [销售额],
1, [利润],
2, [订单数量],
3, [销售数量],
[销售额]
)
排名计算我们使用视觉对象计算即可,新建一个表,添加动态维度参数和动态指标参数这两个字段。
在表的范围内点击鼠标右键,新建一个视觉对象计算。
我们使用支持视觉计算的 RANK 函数实现排名计算,关于 RANK 在视觉计算中的应用,参考:排名问题新解法:探索可视化计算中的 RANK 函数
表达式非常简单,一行搞定。
但是返回到报表之后,当我们切换指标时,会发生错误。
这是因为我们在排名计算使用的是销售额,当我们选中利润时,视觉计算就找不到销售额度量值了。
这时候我们把销售额改成利润,就可以恢复正常。
如果我们再进行指标切换,它还会显示错误,有没有什么办法能够在视觉计算中实现指标动态化呢?
视觉对象计算只能引用视觉对象上添加的度量值,我们添加了两个字段参数,但是视觉对象计算只能引用当前选中的参数字段。
这时候我们就需要在视觉对象上添加动态指标度量值,这样才能实现视觉对象排名指标动态化。
有的小伙伴可能会问,那为什么不直接使用这个动态指标度量值来替换字段参数呢?这是因为字段参数可以根据当前所选的指标返回对应的度量值,每个度量值之间是独立的,会拥有不同的列名和数据格式。变成一个度量值之后,尽管值是一样的,但是值的格式和列名不会随着所选指标变化。
所以最佳选择还是使用字段参数作为显示的数值列,然后添加一个动态指标度量值作为排序依据。
关闭列标题和值的文本自动换行,将动态指标列的宽度调到最小。
缩放动态指标列直到此列不显示。
这样在视觉上还是三列。
转到视觉对象数据格式设置选项,将排名列的数据类型设置为整数。
完成。
比传统的 DAX 计算要更加方便并且易于理解,因为视觉计算不用考虑忽略上下文,直接使用 ROWS 轴即可,感兴趣的小伙伴赶快去试一试吧。
如果你对本文的 Power BI 源文件感兴趣可以私信老师了解领取方式。
一更专业的数据分析师训练营一
🔍《数据分析之道》:点击文字查看具体报名信息。
💡《商业智能之道》:点击文字查看具体报名信息。
🔗 如何获取更多信息?扫描下方二维码具体咨询。