函数周期表丨筛选丨值丨KEEPFILTERS

KEEPFILTERS函数

如果说,CALCULATE函数和CALCULATETABLE函数是霸道的话,那么KEEPFILTERS函数就是温柔。

CALCULATE函数,本身的作用我们都知道,就是修改上下文形成新的上下文,会覆盖原有列的所有上下文,以CALCULATE函数的结果作为新的上下文。

其本身行为是霸道的,KEEPFILTERS函数就是为了弥补这种霸道而产生的。

用途:将CALCULATE函数本身的覆盖上下文修改为追加上下文。

语法

DAX=
KEEPFILTERS(<表达式>)

参数

表达式:任意表达式。

返回结果

例子

模拟数据:

这是白茶随机模拟的数据。

CALCULATE例子 =
CALCULATE ( SUM ( '例子'[数据] ), '例子'[类别] = "白茶" )

结果:

这段CALCULATE的代码,将条件限定为“白茶”,因此白茶这一条件直接覆盖了当前列中的其他筛选条件,只显示这一项。

KEEPFILTERS例子 =
CALCULATE ( SUM ( '例子'[数据] ), KEEPFILTERS ( '例子'[类别] = "白茶" ) )

对比一下结果:

而使用KEEPFILTERS函数的结果,是将“白茶”这一条件,追加到当前筛选中。

CALCULATE是找到“白茶”这个人,在你们团队,那么你们团队就一起处罚;

而KEEPFILTERS是追加筛选是什么意思?就是我找到“白茶”这个人了,和其他人无关,只对“白茶”进行处罚。

虽然白茶说的话可能粗糙一点,但是意思差不多。


可能还是不太好理解,我们再添加两组代码进行对比:

代码1:

聚合 =
SUM ( '例子'[数据] )

代码2:

CALCULATE例子 =
CALCULATE ( SUM ( '例子'[数据] ), '例子'[类别] = "白茶" )

代码3:

CALCULATE例子2 =
CALCULATE ( SUM ( '例子'[数据] ), '例子'[类别] = "白茶", VALUES ( '例子'[类别] ) )

代码4:

KEEPFILTERS例子 =
CALCULATE ( SUM ( '例子'[数据] ), KEEPFILTERS ( '例子'[类别] = "白茶" ) )

结果:

分别进行解释:

SUM本身受到上下文的影响,因此会自动呈现每个筛选条件的数值;

CALCULATE例子只有一个筛选条件为“白茶”,这个条件覆盖了当前的筛选,导致每行的条件都是“白茶”;

KEEPFILTERS例子将“白茶”这一条件,追加到当前筛选中,二者取交集,因此只有“白茶”呈现;

CALCULATE例子2先是受到内部优先级影响,运行VALUES函数,其次“白茶”这一条件围绕着VALUES函数进行,二者取交集,呈现“白茶”结果。

因此,虽然KEEPFILTER例子结果与CALCULATE例子2结果是一样的,但是运行逻辑不同。

前者是内部条件与外部筛选取交集;

后者是内部条件取交集,不涉及外部。

白茶是用CALCULATE函数进行举例的,对于CALCULATETABLE函数效果也差不多,这里就不赘述了。


小伙伴们❤GET了么?

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

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

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

Fabric丨白茶 文章被收录于专栏

数据分析进阶之路,带你深入了解可视化技巧。

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务