各位读者大家好!
今天的重点函数解析为大家带来的是KEEPFILTERS函数的用法,一起来看看吧!
首先,我们来看下KEEPFILTERS的语法构成,只有一个参数,如下:
KEEPFILTERS(<Exprission>)
对这个函数的用法,描述如下:KEEPFILTERS一个筛选器修饰符,它不会删除筛选器上下文中与KEEPFILTERS参数应用的筛选器冲突的现有列或表筛选器。
感觉还是很抽象,在我们具体阐释该函数的具体用法前,先来看一个案例:计算产品颜色为红色的产品销售额。很多小伙伴都会写出如下度量值:
AlwaysRed := CALCULATE ( [SalesAmount], Products[Color]= "Red" )
在引擎内部,该表达式会被转化为以下表达式:
AlwaysRed_Filter := CALCULATE ( [SalesAmount], FILTER( ALL( Products[Color] ), Products[Color]= "Red" ) )
也就是说,CALCULATE内部的ALL函数去除了外部筛选器对Color列的筛选,对所有外部的筛选全部按照新的筛选器颜色为红色进行计算。
如果不想丢失外部已经存在的筛选器,一个广泛应用的方法是用VALUES取代ALL,代码如下:
OnlyRed_Values:= CALCULATE ( [SalesAmount], FILTER( VALUES( Products[Color] ), Products[Color]= "Red" ) )
一起来看下几个函数的结果会有怎样的差异,如下图示:
在度量值AlwaysRed中,因为ALL的存在,对红色的筛选覆盖了外部筛选器的颜色筛选,所以得到的结果将是红色的产品销售数量;而OnlyRed_Values中用的是Values,没有取消外部上下文的筛选,这个时候的结果就是外部上下文和内部上下文交互的结果。以BLACK为例,外部上下文筛选黑色,而内部筛选的是红色,两者之间的交集为空,故结果为0。
对于OnlyRed_Values实现的效果,我们也可以用KEEPFILTERS实现,先看代码:
OnlyRed := CALCULATE ( [SalesAmount], KEEPFILTERS( Products[Color] = "Red" ) )
相对应的,该代码等价于以下代码:
OnlyRed_KeepfiltersAll:= CALCULATE ( [SalesAmount], KEEPFILTERS( FILTER( ALL( Products[Color] ), Products[Color]= "Red" ) ) )
让我们通过之前对该函数的语法描述重新解释这段代码,ALL取消外部上下文对颜色的筛选,当外部上下文和颜色有冲突时,用内部筛选器取代,但KEEPFILTERS的出现有保留了外部筛选器对颜色的筛选,这样就和度量值OnlyRed_Values计算出了同样的结果。
好了,做一个简单的小结:
CALCULATE([SalesAmount],KEEPFILTERS( Products[Color] = "Red" ) )
CALCULATE([SalesAmount],KEEPFILTERS (FILTER (ALL ( Products[Color]),Products[Color] = "Red")))
CALCULATE([SalesAmount],FILTER(VALUES( Products[Color] ),Products[Color] = "Red"))
三个度量值在计算结果上是一致的,当CALCULATE内部用ALL家族的函数做筛选器的时候,会取消外部筛选器的筛选作用。这个时候用KEEPFILTERS会使外部上下文重新起到筛选作用。在数据的呈现效果上,和CALCULATE内部用VALUES是一样的。当大家想到用FILTER(VALUES(Col),Expression)和外部上下文交互时,这个时候可以使用KEEPFILTERS(<Exprission>)代替。好处是,代码更简洁,并且在执行速度上更优。
好了,关于KEEPFILTERS的用法介绍就到这里。大家如有疑问或者有别的想要了解的函数,请留言说明。祝大家学习愉快!
* PowerPivot工坊原创文章,转载请注明出处!
延伸阅读:
有关SUMMARIZE函数的简单查询用法
ALLEXCEPT函数应用实例
我敢说这个函数多数人都不知道—HASONEFILTER
LOOKUPVALUE函数的使用姿势
Earlier函数的替代方案 – Var函数
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
,