答案當然是肯定的。
採用度量值的方式首先定義好分組的類別和標準,然後把需要分組的資料分別統計到指定的分組中。
依然按照上篇文章的資料,統計優秀、良好、及格和不及格的學生分別有多少?
成績表中的資料結構不做任何更改,我們先建立乙個分組表,
如果成績落在最小值和最大值之間,就歸屬於該分組。
編寫度量值如下:
成績分組統計 =使用度量值和新建列的不同之處就是,新建列的行上下文是確定的,可以直接使用行欄位,而度量值的外部上下文是動態的,所以無法直接和某個具體指標匹配,這時就要用到selectedvalue函式,它根據外部上下文的環境來進行動態匹配運算。編寫度量值的表示式時,不知道如何查詢外部上下文時,一定不要忘了selectedvalue函式。calculate(
distinctcount('成績'[姓名]),
filter('成績',
and(
'成績'[數學成績]<=selectedvalue('分組表'[最大值]),
'成績'[數學成績]>=selectedvalue('分組表'[最小值])
利用矩陣來看看度量值的結果,
這樣每個類別的人數就統計出來了,不過有個問題是,總計行沒有計算出來。原因是由於selectedvalue函式函式只查詢了分組表中的類別,而該錶並沒有總計這個值,所以無法計算顯示為空。
為了使總計正常顯示,可以再加個判斷函式isfiltered,如果分組列中有該分類,就正常執行上面的度量值計算,否則返回成績表中人數合計。
更改後的度量值如下:
成績分組統計 =然後總計行會正常顯示。並且源資料發生變化,度量值返回的結果也會同步更新。if(isfiltered('分組表'[分組]),
calculate(
distinctcount('成績'[姓名]),
filter('成績',
and(
'成績'[數學成績]<=selectedvalue('分組表'[最大值]),
'成績'[數學成績]>=selectedvalue('分組表'[最小值])
distinctcount('成績'[姓名])
以上就是使用度量值進行分組的做法,dax看起來很長,其實邏輯上比較簡單,理解它對進一步掌握dax有很大幫助。
利用度量值,進行資料分析時可以更靈活的使用,下篇文章介紹度量值分組的應用場景。
加入知識星球,隨時問題答疑,更多資源分享
YTU 2716 統計不及格人數
設一維陣列存放了n 100 個學生的成績,編寫函式求不及格的人數 部分 已給定如下,只需要提交缺失的 include using namespace std int main num failcnt score,n cout n和n個學生的成績 不及格的人數 10 90 85 50 45 70 76...
查詢不及格人數問題
student.class package com.object title student description 學生資訊類 author linian date 2019年9月24日 public class student 有參的構造方法 初始化工作 public student int i...
一張表中, 查詢學生及格和不及格人數
表結構為 class name score 班級 姓名 分數 查詢每個班級中,及格和不及格學生的人數 select class sum case when score 60 then 1 else 0 end as gt60,sum case when score 60 then 0 else 1 ...