当前位置: 首页 > 最新文章 > 正文

PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

筛选器函数和Excel中的函数差别就很大了,这是PowerBI特有的,与上下文有这密切的关系。这一篇主要介绍ALL、ALLEXCEPT和ALLSELECTED三个函数,主要是为下一篇的RANKX函数做准备。ALL函数或者说所有的筛选器函数一般都不单独使用,而是作为中间函数来影响其他计算的结果。我们有个销售明细表,然后需求求每个品牌的销售金额占比,就需要用每个品牌的金额/总体销售金额。第一个参数必须

admin

筛选器函数和Excel中的函数差别就很大了,这是PowerBI特有的,与上下文有这密切的关系。这一篇主要介绍ALL、ALLEXCEPT和ALLSELECTED三个函数,主要是为下一篇的RANKX函数做准备。ALL函数或者说所有的筛选器函数一般都不单独使用,而是作为中间函数来影响其他计算的结果。我们有个销售明细表,然后需求求每个品牌的销售金额占比,就需要用每个品牌的金额/总体销售金额。第一个参数必须是对基表的引用,所有后续参数必须是对基列的引。ALLSELECTED函数作用是删除当前查询的列和行中的上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器。解释一下就是我们自己可以先根据切片器就行筛选,然后ALLSELECTED函数只作用于我们筛选后的表格,下面演示一下,我们只保留软件和手机两类。

本来是打算写一篇RANKX排名函数的,这个函数很有趣而且很实用,可以做很多有趣的数据展示。但是过程中发现要理解RANKX的精髓,必须要先理解筛选器函数才行,所以这里就先把筛选器函数介绍几个,需要说明一下的是,筛选器函数在DAX中使用是费用频繁的,稍微复杂一点DAX表达式都需要用到筛选器函数,所以如果真的要入门PowerBI,筛选器函数是一道重要的槛。

PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

筛选器函数和Excel中的函数差别就很大了,这是PowerBI特有的,与上下文有这密切的关系。PowerBI筛选函数目前有15个左右,通过筛选函数主要是对计算度量值的表格进行动态筛选或者强制不筛选,这句话理解起来有点困难,但后面举几个例子再回头来看就能够理解了。这一篇主要介绍ALL、ALLEXCEPT和ALLSELECTED三个函数,主要是为下一篇的RANKX函数做准备。


【ALL】

ALL([<table> | <column>[, <column>[, <column>[,…]]]])

返回表中的所有行或列中的所有值,同时忽略已应用的筛选器,ALL函数对于清除表中所有行的筛选器以及创建针对表中所有行的计算非常有用。ALL函数或者说所有的筛选器函数一般都不单独使用,而是作为中间函数来影响其他计算的结果。


先举例说明一下,看了例子应该就明白了。我们有个销售明细表,然后需求求每个品牌的销售金额占比,就需要用每个品牌的金额/总体销售金额。但是如果按品牌展示销售金额,DAX如下↓

销售金额(万) = SUM([总金额])/10000
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

可以发现,我们已经使用了SUM求和函数了,但因为是按品牌进行聚合的,所有品牌这个字段就相当于一个筛选器,后面的金额就只展示了每个品牌的销售金额。但是我们现在需要把每个品牌后面的金额都计算成总金额,这里就需要ALL筛选器函数,把对品牌的筛选给清除掉,DAX预计如下↓

ALL销售金额 = CALCULATE([销售金额(万)],ALL('产品表'))
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

这里停下来好好感受一下吧。因为我们对产品部里面所有字段进行了清楚筛选器,所以现在每个产品的金额都会显示所有的总金额,就算只选择一个产品,结果还是一样的↓

PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

但是,因为我们是对产品表进行取消筛选器的,如果我们更好日期时间,就会显示制定时间的数据,比如我们选择2019年的数据,结果就全是2019年的数据了↓

PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

我们可以再对日期表加一个取消筛选,就可以了↓

ALL销售金额2 = CALCULATE([销售金额(万)],ALL('产品表'),ALL('日期表'))
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED


好了,最关键的总数求出来之后,只需要把两列相除就可以求得每个产品的销售金额占比了↓

产品金额占比 = DIVIDE([销售金额(万)],[ALL销售金额])
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED



【ALLEXCEPT】

我们已经实现了对每个品牌占比的计算,但是领导和同事的想法是瞬息万变的,他们不仅想看每个品牌总体的占比,也想看一下每个品牌在各品类中的占比。这个时候就需要ALLEXCEPT函数了。

ALLEXCEPT(<table>,<column>[,<column>[,…]])

ALLEXCEPT作用是除了指定的列之外,其他列全部清楚筛选器。第一个参数必须是对基表的引用,所有后续参数必须是对基列的引。下面就是我们要实现的品牌在每个品类中的占比计算金额↓

ALLEXCEPT金额 = CALCULATE(    [销售金额(万)],    ALLEXCEPT('产品表','产品表'[品类]))
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

可以看到,每一类都是本类的求和,然后在进行相处就可以得到我们想要的百分比了↓

品类产品金额占比 = DIVIDE([销售金额(万)],[ALLEXCEPT金额])
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED



【ALLSELECTED】

很多时候再展示数据的时候,我们可能只选择部分的数据进行展示,比如我们现在只需要看软件和手机两个品类的数据,各品牌占这两个品类的整体占比。这个时候就需要ALLSELECTED函数了。

ALLSELECTED函数作用是删除当前查询的列和行中的上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器。解释一下就是我们自己可以先根据切片器就行筛选,然后ALLSELECTED函数只作用于我们筛选后的表格,下面演示一下,我们只保留软件和手机两类。

ALLSELECT金额 = CALCULATE([销售金额(万)],ALLSELECTED('产品表'))筛选金额占比 = DIVIDE([销售金额(万)],[ALLSELECT金额])
PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED

可以看到,最后的占比总和是100%,只前面的ALL函数只有30.97%,效果还是达到了。


End

PowerBI筛选器函数_ALL、ALLEXCEPT、ALLSELECTED


上一篇: 曲线logo设计(直线和曲线的logo) 下一篇:spring加载properties文件(spring加载properties文件)
返回顶部