重点函数 | KEEPFILTERS 用法介绍


各位读者大家好!

今天的重点函数解析为大家带来的是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"
    )
)

一起来看下几个函数的结果会有怎样的差异,如下图示:

file

在度量值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()代替。好处是,代码更简洁,并且在执行速度上更优。
好了,关于KEEPFILTERS的用法介绍就到这里。大家如有疑问或者有别的想要了解的函数,请留言说明。祝大家学习愉快!

  • PowerPivot工坊原创文章,转载请注明出处!

    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊