Power BI技巧之重点函数 _ KEEPFILTERS 用法介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个时候用KEEPFILTERS会使外部上下文重新起到筛选作用。在数据的呈现效果上,和CALCULATE内部用VALUES是一样的。 当大家想到用FILTER(VALUES(Col),Expression)和外部上下文交互时,这个时候可以使用KEEPFILTERS()代替。好处是,代码
更简洁,并且在执行速度上更优。
重点函数 | KEEPFILTERS 用法介绍
各位读者大家好!
今天的重点函数解析为大家带来的是KEEPFILTERS函数的用法wenku.baidu.com一起来看看吧! 首先,我们来看下KEEPFILTERS的语法构成,只有一个参数,如下:
KEEPFILTERS(<Exprission>) 对这个函数的用法,描述如下:KEEPFILTERS一个筛选器修饰符,它不会删除筛选器上下文中与KEEPFILTERS参数应用的筛 选器冲突的现有列或表筛选器。 感觉还是很抽象,在我们具体阐释该函数的具体用法前,先来看一个案例:计算产品颜色为红色的产品销售额。很多小伙伴都会 写出如下度量值:
也就是说,CALCULATE内部的ALL函数去除了外部筛选器对Color列的筛选,对所有外部的筛选全部按照新的筛选器颜色为红
色进行计算。
如果不想丢失外部已经存在的筛选器,一个广泛应用的方法是用VALUES取代ALL,代码如下:
OnlyRed_Values:= CALCULATE (
[SalesAmount], FILTER(
OnlyRed := CALCULATE (
[SalesAmount], KEEPFILTERS( Products[Color] = "Red" ) )
相对应的,该代码等价于以下代码:
OnlyRed_KeepfiltersAll:= CALCULATE (
[SalesAmount], KEEPFILTERS(
结果。 好了,做一个简单的小结:
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家族的函数做筛选器的时候,会取消外部筛选器的筛选作用。这
FILTER( ALL( Products[Color] ), Products[Color]= "Red"
) ) )
让我们通过之前对该函数的语法描述重新解释这段代码,ALL取消外部上下文对颜色的筛选,当外部上下文和颜色有冲突时,用 内部筛选器取代,但KEEPFILTERS的出现有保留了外部筛选器对颜色的筛选,这样就和度量值OnlyRed_Values计算出了同样的
VALUES( Products[Color] ), Products[Color]= "Red" ) )
一起来看下几个函数的结果会有怎样的差异,如下图示:
在度量值AlwaysRed中,因为ALL的存在,对红色的筛选覆盖了外部筛选器的颜色筛选,所以得到的结果将是红色的产品销售数 量;而OnlyRed_Values中用的是Values,没有取消外部上下文的筛选,这个时候的结果就是外部上下文和内部上下文交互的结 果。以BLACK为例,外部上下文筛选黑色,而内部筛选的是红色,两者之间的交集为空,故结果为0。 对于OnlyRed_Values实现的效果,我们也可以用KEEPFILTERS实现,先看代码:
好了,关于KEEPFILTERS的用法介绍就到这里。大家如有疑问或者有别的想要了解的函数,请留言说明。祝大家学习愉快!
AlwaysRed := CALCULATE (
[SalesAmount], Products[Color]= "Red" )
在引擎内部,该表达式会被转化为以下表达式:
AlwaysRed_Filter := CALCULATE (
[SalesAmount], FILTER(
ALL( Products[Color] ), Products[Color]= "Red" ) )