
1. Summarize
A. 文法
SUMMARIZE ( <Table>, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] )
複制
位置 | 參數 | 描述 |
---|---|---|
第1參數 | Table | 需要操作的表 |
第2參數 | GroupBy_ColumnName | 分組的依據(可以有多個) |
可選第3參數 | Name | 分組後的新列名,可以有多個彙總(文本格式) |
可選第4參數 | Expression | 新增列的表達式,可以有多個 |
B. 傳回
表——包含彙總依據及新列名的表
C. 注意事項
- 彙總的依據必須是表或者相關表的列。
- 不能用于虛拟添加列這種。
- 盡量用其他方式來替換第3和第4參數。(可以用SummarizeColumns或者AddColumns方式來得到同樣結果)
D. 作用
建立按指定列分組後的計算表達式彙總
E. 案例
表3
- 要求按學科算平均成績。
- 要求按不同學校的學科平均成績。 按學科算平均成績,我們需要彙總學科,并計算平均成績即可。
Summarize('表3',
'表3'[學科],
"平均成績",Average('表3'[成績])
)
複制
傳回結果:
按不同學校學科的學科平均成績,則需要添加2個彙總依據,一個是學校,一個是學科。
Summarize('表3',
'表3'[學校],'表3'[學科],
"平均成績",Average('表3'[成績])
)
複制
傳回結果:
如果是使用AddColumns方式來進行的話
var
a=Summarize('表3','表3'[學科])
return
AddColumns(a ,
"平均成績",
Calculate(Average('表3'[成績]))
)
複制
解釋:因為涉及到上下文的原因,是以在Average求平均的時候嵌套了Calculate進行上下文轉換。
2. SummarizeColumns
A. 文法
SUMMARIZECOLUMNS ( <GroupBy_ColumnName>, [<FilterTable>] , [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<FilterTable>] [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] ] ] ] )
複制
位置 | 參數 | 描述 |
---|---|---|
可重複第1參數 | GroupBy_ColumnName | 分組依據,可重複。可用于小計和總計函數 |
可選重複第2參數 | FilterTable | 可對原表進行篩選 |
可選第重複3參數 | Name | 新增加的列名 |
可選重複第4參數 | Expression | 新增加的列的内容表達式 |
B. 傳回
表——基于指定分組列計算值的表。
C. 注意事項
- 不支援上下文
- 不傳回無值的彙總
D. 作用
傳回的計算值為非空值的分組。
E. 案例
表3
SummarizeColumns('表3'[姓名])
複制
解釋: 相當于分類彙總标題,也就是姓名去重。
SummarizeColumns('表3'[姓名],
Filter('表3','表3'[學校]="1中")
)
複制
解釋: 先篩選出學校為1中的資料,然後再同歸彙總來得到不重複的姓名。
SummarizeColumns('表3'[姓名],
Filter('表3','表3'[學校]="1中"),
"成績",Sum('表3'[成績])
)
複制
解釋: 在得到彙總姓名後再去求成績。但是因為無值這個成績為空,是以在彙總的時候就不顯示,直接去除。
SummarizeColumns('表3'[姓名], '表3'[學校],
Filter('表3','表3'[學校]="1中"),
"成績",Sum('表3'[成績])
)
複制
解釋:增加學校作為篩選彙總的依據。
SummarizeColumns('表3'[姓名], '表3'[學校],
Filter('表3','表3'[學校]="2中"),
"總成績",Sum('表3'[成績]),
"平均成績", Average('表3'[成績])
)
複制
解釋: 先根據篩選學校是2中的,然後根據姓名和學校來進行分組,最後增加2個字段,一個是總成績,一個是平均成績。
3. GroupBy
A. 文法
GROUPBY ( <Table> , <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] ] )
複制
位置 | 參數 | 描述 |
---|---|---|
第1參數 | Table | 分組的表 |
第2可選重複參數 | GroupBy_ColumnName | 分組依據的列 |
第3可選重複參數 | Name | 增加列的名稱,文本格式 |
第4可選重複參數 | Expression | 增加列的計算表達式 |
B. 傳回
表——由分組列及添加表達式的列組成。
C. 注意事項
- 參數2不能為表達式,隻能是現有的列名。
- 參數4的表達式必須傳回标量值。
- 表達式中不能使用Calculate涉及上下文計算。
- 通常表達式中用CurrentGroup函數作為表參數,但不能用于多層嵌套。
- CurrentGroup函數不帶參數,通常和帶X結尾的聚合函數一起使用。
D. 作用
傳回按指定列分組後計算的表達式結果
E. 案例
GroupBy ( '表3',
'表3'[姓名],
"總成績", SumX ( CurrentGroup(), '表3'[成績] )
)
複制
解釋:通過姓名進行分組彙總,并計算目前彙總資料表的成績合計。功能在某些地方和SummarizeColumns以及Summarize類似,在彙總時如果值為空的話,也會忽略彙總,是以姓名為無值的這裡也依舊不顯示。