生活就像一盒巧克力,你永远不知道下一颗是什么味道。
——《阿甘正传》
在学习CALCULATE过程中,白茶发现了,基本上这个函数是我们使用率最高的一个函数,普通的聚合用SUM、SUMX就可以,但是一旦涉及到有条件聚合的时候,基本上都离不开CALCULATE。而且在日常处理数据时,各式各样的情况层出不穷,本次呢,白茶分享一下以点带面的筛选聚合模式。
(这里感谢群里@韭菜大佬的点拨,不然会在这里卡很久。)
话不多说,咱来看示例文件:
这是白茶做的示例文件,但是思路都是一样的,只是具体内容上有区别。说一下什么意思,就是我们在对某个店进行销售分析的时候,往往需要体现这个地点占总体的比例,这个昨天的文章已经说了,可是我不光想看占比,我还想看具体的数值,例如:当我选择大连的时候,我需要显示大连这个城市和整个辽宁省整体的状况,该如何处理呢?
可能有的小伙伴会说了,白茶,就你事多,我自己做看分层占比就好了。之前就曾提到过,我们做报表,有时候不单单是只给自己看,还要简化的能直观呈现给别人,能把自己的思想表达出来,对吧。来,我们继续:
当时我的想法就像下面一样,用ALL清除外部筛选,然后重新定义上下文,然后,就没有然后了。
这里用的公式如下:
代码语言:txt复制DAX=
CALCULATE(SUM('表'[求和项]),ALL('表'[地点]))
和昨天的一样,但是后面卡主了,不知道怎么二次定义上下文。
曾想过说先用ALL,再用FILTER进行筛选,可是引出了一系列的小坑,比如说建立维度啊,索引啊,但是都绕不过之前的问题,无法选定某个区域,后来韭菜大佬点醒了我。
用VALUES!
将代码修改如下:
代码语言:txt复制DAX=
CALCULATE(SUM('表'[求和项]),ALL('表'[地点]),VALUES('表'[省份]))
结果如下:
这次结果是符合我们预期的,解释一下各部分的用意:
CALCULATE(SUM('表'求和项,这个之前提到过,是为了聚合,后面所有的条件项都是为了这个聚合做准备。
ALL('表'地点),这个是为了清除所有切片、筛选效果,为后面重新定义求和范围做准备。
VALUES('表'省份),这是重新定义我们的计算范围,VALUES这个函数会受到切片的影响,然后返回唯一值,这不就符合我们的需求了么?选择城市,然后计算整个省份的数值,省份是唯一的。
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球PowerBI丨需求圈)
这里是白茶,一个PowerBI的初学者。