數據可視化之powerBI技巧(二十)采悟:創建度量值,輕松進行分組統計


上一篇文章中的分組,都是通過新建列的方式實現的,直觀上比較容易理解。不過這樣都修改了原始數據的結構,如果我們不在源表上進行修改,直接通過度量值的方式來進行分組,是否可以實現呢?

答案當然是肯定的。

采用度量值的方式首先定義好分組的類別和標准,然后把需要分組的數據分別統計到指定的分組中。

依然按照上篇文章的數據,統計優秀、良好、及格和不及格的學生分別有多少?

 

成績表中的數據結構不做任何更改,我們先創建一個分組表,

 

如果成績落在最小值和最大值之間,就歸屬於該分組。

編寫度量值如下:

 

成績分組統計 =
CALCULATE(
DISTINCTCOUNT('成績'[姓名]),
FILTER('成績',
AND(
'成績'[數學成績]<=SELECTEDVALUE('分組表'[最大值]),
'成績'[數學成績]>=SELECTEDVALUE('分組表'[最小值])
)
)
)

 

使用度量值和新建列的不同之處就是,新建列的行上下文是確定的,可以直接使用行字段,而度量值的外部上下文是動態的,所以無法直接和某個具體指標匹配,這時就要用到SELECTEDVALUE函數,它根據外部上下文的環境來進行動態匹配運算。

編寫度量值的表達式時,不知道如何查找外部上下文時,一定不要忘了SELECTEDVALUE函數。

利用矩陣來看看度量值的結果,

 

 

 

這樣每個類別的人數就統計出來了,不過有個問題是,總計行沒有計算出來。原因是由於SELECTEDVALUE函數函數只查找了分組表中的類別,而該表並沒有總計這個值,所以無法計算顯示為空。

為了使總計正常顯示,可以再加個判斷函數ISFILTERED,如果分組列中有該分類,就正常執行上面的度量值計算,否則返回成績表中人數合計。

更改后的度量值如下:

 

成績分組統計 =
IF(ISFILTERED('分組表'[分組]),
CALCULATE(
DISTINCTCOUNT('成績'[姓名]),
FILTER('成績',
AND(
'成績'[數學成績]<=SELECTEDVALUE('分組表'[最大值]),
'成績'[數學成績]>=SELECTEDVALUE('分組表'[最小值])
)
)
),
DISTINCTCOUNT('成績'[姓名])
)

 

然后總計行會正常顯示。並且源數據發生變化,度量值返回的結果也會同步更新。

以上就是使用度量值進行分組的做法,DAX看起來很長,其實邏輯上比較簡單,理解它對進一步掌握DAX有很大幫助。利用度量值,進行數據分析時可以更靈活的使用,下篇文章介紹度量值分組的應用場景。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM