学习 CALCULATE 函数(四)

file

“生活就像一盒巧克力,你永远不知道下一颗是什么味道。”
——《阿甘正传》

在学习CALCULATE过程中,白茶发现了,基本上这个函数是我们使用率最高的一个函数,普通的聚合用SUM、SUMX就可以,但是一旦涉及到有条件聚合的时候,基本上都离不开CALCULATE。而且在日常处理数据时,各式各样的情况层出不穷,本次呢,白茶分享一下以点带面的筛选聚合模式。

(这里感谢群里@韭菜大佬的点拨,不然会在这里卡很久。)
file

话不多说,咱来看示例文件:
file

这是白茶做的示例文件,但是思路都是一样的,只是具体内容上有区别。说一下什么意思,就是我们在对某个店进行销售分析的时候,往往需要体现这个地点占总体的比例,这个昨天的文章已经说了,可是我不光想看占比,我还想看具体的数值,例如:当我选择大连的时候,我需要显示大连这个城市和整个辽宁省整体的状况,该如何处理呢?
file
可能有的小伙伴会说了,白茶,就你事多,我自己做看分层占比就好了。之前就曾提到过,我们做报表,有时候不单单是只给自己看,还要简化的能直观呈现给别人,能把自己的思想表达出来,对吧。来,我们继续:

当时我的想法就像下面一样,用ALL清除外部筛选,然后重新定义上下文,然后,就没有然后了。
file

这里用的公式如下:

DAX =
CALCULATE ( SUM ( '表'[求和项] ), ALL ( '表'[地点] ) )

和昨天的一样,但是后面卡主了,不知道怎么二次定义上下文。

曾想过说先用ALL,再用FILTER进行筛选,可是引出了一系列的小坑,比如说建立维度啊,索引啊,但是都绕不过之前的问题,无法选定某个区域,后来韭菜大佬点醒了我。

用VALUES!
file

将代码修改如下:

DAX =
CALCULATE ( SUM ( '表'[求和项] ), ALL ( '表'[地点] ), VALUES ( '表'[省份] ) )

结果如下:
file

这次结果是符合我们预期的,解释一下各部分的用意:

CALCULATE(SUM('表'[求和项],这个之前提到过,是为了聚合,后面所有的条件项都是为了这个聚合做准备。

ALL('表'[地点]),这个是为了清除所有切片、筛选效果,为后面重新定义求和范围做准备。

VALUES('表'[省份]),这是重新定义我们的计算范围,VALUES这个函数会受到切片的影响,然后返回唯一值,这不就符合我们的需求了么?选择城市,然后计算整个省份的数值,省份是唯一的。

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶