POWER BI DAX函數(shù)應(yīng)用-篩選器函數(shù)(上)

1.ALL(Table)或ALL (Column[, Column[, …]])

函數(shù)作用:返回表中的所有行或者返回列中的所有值,同時忽略可能已應(yīng)用的任何篩選器。此函數(shù)可用于清除篩選器并對表中的所有行創(chuàng)建計算。

應(yīng)用場景:計算部分占總體的排名/百分比。

示例:要計算各城市的銷售金額排名/占總銷售額的百分比 。

原始數(shù)據(jù)

例1.1 計算排名。

新建度量值:

排名 = RANKX('銷售記錄',SUM('銷售記錄'[金額]),,DESC)

得到結(jié)果:

排名計算 錯誤結(jié)果

得到所有排名均為1,很顯然,結(jié)果是錯誤的。原因是銷售城市對排名操作仍起到了篩選器的作用,換而言之,以上結(jié)果是每個城市的銷售金額占每個城市的總金額的排名,實際上,我們需要的是每個城市的銷售金額占所有城市的總金額的排名,因此要刪除銷售城市這個篩選器,ALL函數(shù)即可解決此問題。

新建度量值:

銷售金額 = SUM('銷售記錄'[金額])

排名1 = RANKX(ALL('銷售記錄'[銷售城市]),[銷售金額],,DESC)

采用ALL函數(shù),即可清除銷售城市對計算結(jié)果的影響,得到結(jié)果:

排名計算 正確結(jié)果

例1.2 計算百分比。

新建度量值:

銷售金額 = SUM('銷售記錄'[金額])

占比% = '銷售記錄'[銷售金額]/CALCULATE('銷售記錄'[銷售金額],ALL('銷售記錄'))

得到結(jié)果:

百分比計算結(jié)果

上述展示了單一層級,即銷售城市層級下的銷量占比,而實際上,銷售城市上面還有一層銷售區(qū)域,現(xiàn)在欲同時展示兩個層級下的銷量占比,該如何操作呢?

首先,我們先在界面右側(cè)重新建立一個由銷售區(qū)域和銷售城市組成的新的層次結(jié)構(gòu)(可直接拖動銷售城市到銷售區(qū)域上),如圖1所示。

然后,將新建立的層次結(jié)構(gòu)拖到行,然后點擊可視化圖形(矩陣)的右上角第四個按鈕,展開層次結(jié)構(gòu)中的所有下移級別,即可將所有層級全部展開。

最后,書寫度量值。

占比% = '銷售記錄'[銷售金額]/CALCULATE('銷售記錄'[銷售金額],ALL('銷售記錄'))

分類占比% = '銷售記錄'[銷售金額]/CALCULATE('銷售記錄'[銷售金額],ALL('銷售記錄'[銷售城市]))

注意這兩個度量值的區(qū)別,區(qū)別在于占比%中的ALL('銷售記錄')清除了所有篩選器的篩選作用,得到的結(jié)果是各個區(qū)域、各個城市的實際占比,但是分類占比%中的ALL('銷售記錄'[銷售城市])僅清除了[銷售城市]對結(jié)果的篩選作用,因此,它的結(jié)果是各個城市占所在區(qū)域的占比,如下圖所示。

占比%與分類占比%的結(jié)果對比

這時,我們再想象一種業(yè)務(wù)場景,老板并不只想看部分占總體的占比,還想看部分占部分的占比,舉個例子,老板既不想看費城銷量占總體銷量的占比,也不想看費城銷量占所在區(qū)域的占比,而是想看費城的銷量在費城、紐約、芝加哥三個城市中的銷量占比,如何解決?

答案就是添加一個切片器,但又不僅僅是添加一個切片器就能解決的,還需要函數(shù)ALLSELECTED([<tableName> | <columnName>])。

2.ALLSELECTED([<tableName> | <columnName>])

函數(shù)作用:從當前查詢的列和行中刪除上下文篩選器,同時保留所有其他上下文篩選器或顯式篩選器。

應(yīng)用場景:解決上述問題。

新建度量值:

按篩選占總體% = '銷售記錄'[銷售金額]/CALCULATE('銷售記錄'[銷售金額],ALLSELECTED('銷售記錄'))

按篩選占分類% = '銷售記錄'[銷售金額]/CALCULATE('銷售記錄'[銷售金額],ALLSELECTED('銷售記錄'[銷售城市]))

計算結(jié)果如下:

如圖,切片器選中費城、紐約、芝加哥三個城市,以費城為例,分析這四個結(jié)果是如何得來的,已知總體銷量為546。

占比%=費城銷量156/總體銷量546=28.57%。

分類占比%=費城銷量156/東區(qū)銷量277=56.32%。

按篩選占總體%=費城銷量156/(費城銷量156+紐約銷量149+芝加哥銷量121)=36.62%。

按篩選占分類%=費城銷量156/(選中的東區(qū)城市銷量:費城156+芝加哥121)=56.32%。

僅從值上來看,按篩選占分類%和分類占比%是相等的,但是意義卻不盡相同,假如將切片器僅選中費城和紐約,那么此時的按篩選占分類%=費城銷量156/(選中的東區(qū)城市銷量:費城156)=100%,而分類占比依然是56.32%。

由此可見,占比的定義變化多端,大有文章,要正確使用ALL(Table)或ALL (Column[, Column[, …]])和ALLSELECTED([<tableName> | <columnName>])函數(shù)。

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

函數(shù)作用:刪除表中除已應(yīng)用于指定列的篩選器之外的所有上下文篩選器。

應(yīng)用場景及示例:《合并同類項問題》篇有對該函數(shù)用法進行詳細描述,再次不再贅述。詳情請參照ALLEXCEPT函數(shù)用法-合并同類項問題


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容