天天看點

Power Pivot中3大彙總函數對比解釋及使用介紹

Power Pivot中3大彙總函數對比解釋及使用介紹

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

Power Pivot中3大彙總函數對比解釋及使用介紹
  • 要求按學科算平均成績。
  • 要求按不同學校的學科平均成績。 按學科算平均成績,我們需要彙總學科,并計算平均成績即可。
Summarize('表3',
        '表3'[學科],
        "平均成績",Average('表3'[成績])
          )           

複制

傳回結果:

Power Pivot中3大彙總函數對比解釋及使用介紹

按不同學校學科的學科平均成績,則需要添加2個彙總依據,一個是學校,一個是學科。

Summarize('表3',
               '表3'[學校],'表3'[學科],
               "平均成績",Average('表3'[成績])
          )           

複制

傳回結果:

Power Pivot中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

Power Pivot中3大彙總函數對比解釋及使用介紹
SummarizeColumns('表3'[姓名])           

複制

Power Pivot中3大彙總函數對比解釋及使用介紹
解釋: 相當于分類彙總标題,也就是姓名去重。
SummarizeColumns('表3'[姓名],
                 Filter('表3','表3'[學校]="1中")
                )           

複制

Power Pivot中3大彙總函數對比解釋及使用介紹
解釋: 先篩選出學校為1中的資料,然後再同歸彙總來得到不重複的姓名。
SummarizeColumns('表3'[姓名],
                 Filter('表3','表3'[學校]="1中"),
                 "成績",Sum('表3'[成績])
                )           

複制

解釋: 在得到彙總姓名後再去求成績。但是因為無值這個成績為空,是以在彙總的時候就不顯示,直接去除。
SummarizeColumns('表3'[姓名], '表3'[學校], 
                 Filter('表3','表3'[學校]="1中"),
                 "成績",Sum('表3'[成績])
                 )           

複制

Power Pivot中3大彙總函數對比解釋及使用介紹
解釋:增加學校作為篩選彙總的依據。
SummarizeColumns('表3'[姓名], '表3'[學校], 
                   Filter('表3','表3'[學校]="2中"),
                      "總成績",Sum('表3'[成績]),
                      "平均成績", Average('表3'[成績])
                 )           

複制

Power Pivot中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. 案例

Power Pivot中3大彙總函數對比解釋及使用介紹
GroupBy ( '表3', 
          '表3'[姓名], 
          "總成績", SumX ( CurrentGroup(), '表3'[成績] )
         )           

複制

Power Pivot中3大彙總函數對比解釋及使用介紹
解釋:通過姓名進行分組彙總,并計算目前彙總資料表的成績合計。功能在某些地方和SummarizeColumns以及Summarize類似,在彙總時如果值為空的話,也會忽略彙總,是以姓名為無值的這裡也依舊不顯示。