回忆是一座桥
却是通往寂寞的牢

PowerBI/DAX的计算组之间的优先级设置

前言

在昨天介绍计算组的《PowerBI/DAX的计算组功能是什么?怎么用?》这篇文章中,漏掉了一个比较关键的点,那就是多个计算组作用于同一个度量值时的优先级问题,因此在这篇文章里做补充说明,算是之前那篇文章的后续吧。如果你没看过之前那篇介绍计算组功能的文章,我建议你先去阅读完后再来看本文,因为在这里我不会再去重复的讲解怎么创建计算组、怎么使用计算组的动态数据格式等等内容,我将默认你看过上篇文章。

计算组之间的优先级

先来看看下面这张图,将它称呼为图1,下面需要引用这张图,请记住它的名字:

为了方便展示与讲解,我没有把数据透视表弄得很复杂,仅仅是把年份与月份放在了行字段,将销售金额和销售数量放在了值字段,将计算组的计算项都做成了切片器,并且这些切片器都还没有工作。所用的销售金额与销售数量度量值如下:

Sales = SUMX('T3销售','T3销售'[T3销售册数]*'T3销售'[T3销售单价])

Volume = SUM('T3销售'[T3销售册数])

现在问题来了,我定义了一个将数值加上100的计算组以及一个能改变数值符号正负的计算组,那么:是先将数值加上一百后再改变符号,还是改变符号后再将数值增加一百?

想要弄懂上面的计算顺序,那么就先要设置计算组之间的优先级,只有告诉引擎先执行那个计算组才能够得到正确结果。计算组的优先级设置位置如下图:

上图中的红框框起来的行就是计算组优先级的设置地方,可以看到,我将改变数值符号的计算组的优先级设置为了100,你可能会觉得这个数字越大就越是优先执行。其实不是的,应该是数字越小越优先执行,因为它是按照升序排列的,所以数字越大越靠后执行。下面来看一下将数值增加一百的计算组的优先级:

我把将数值增加一百的计算组的优先级设置为了20,而改变数值符号的计算组的优先级设置为了100,所以是先将数据透视表里的数值加上一百后再改变符号,结果如下图:

可以看到,上图与图1相比,数值的确是先增加了一百再改变了符号。

下面将这两个计算组的优先级互换,将数值增加一百的计算组的优先级设置为100,而改变数值符号的计算组的优先级设置为了20,所以结果是改变符号后再将数值增加一百,结果如下图:

同样的,将上图的结果与图1的值作比较,可以验证数值是否是先改变符号再增加一百。

总结

当你定义了多个计算组,且得到的结果让你迷惑时,那么很可能就是计算组之间的优先级顺序没有设置好,这点需要注意。

那么,关于计算组的优先级的补充说明就到此为止了,想要真正掌握计算组,那还是要自己亲自去多多实践!

未经允许不得转载:夕枫 » PowerBI/DAX的计算组之间的优先级设置
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论