Power Pivot中3大汇总函数的配套组合函数

2020-03-24 15:43:59 浏览数 (1)

4. ROLLUP

A. 语法
代码语言:javascript复制
ROLLUP ( <GroupBy_ColumnName> [, <GroupBy_ColumnName> [, … ] ] )

位置

参数

描述

第1参数

GroupBy_ColumnName

可重复汇总的依据列名

B. 返回

仅返回小计,不返回可被引用的具体值

C. 注意事项
  • 只有在SUMMARIZE函数中使用。
  • 如果分组依据有多列,而RollUp未汇总全部列,则汇总未选择列。(可以看案例加深理解)
D. 作用

返回小计汇总

E. 案例

表3

代码语言:javascript复制
Summarize('表3', 
           Rollup('表3'[姓名]),
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名]

解释: 因为RollUp包含了全部的汇总依据的组,所以返回时多了一个姓名小计。

代码语言:javascript复制
Summarize('表3', 
           Rollup('表3'[姓名]),'表3'[学校],'表3'[学科],
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名],'表3'[学校],'表3'[学科]

解释: 因为RollUp只选择了姓名字段,未选择全部字段,所以返回的是未选择字段的小计。也就是学校和学科小计。

5. ROLLUPGROUP

A. 语法
代码语言:javascript复制
ROLLUPGROUP ( <GroupBy_ColumnName> [, <GroupBy_ColumnName> [, … ] ] )
B. 返回

返回分组依据的小计汇总,不返回可被引用的具体值

C. 注意事项
  • 仅在SUMMARIZE和ADDMISSINGITEMS函数中使用。
  • 如果和RollUp用法一样,效果也类似同RollUp。
  • 如果嵌套RollUp使用,用于内部小计及小计汇总。RollUp(RollupGroup(分组字段))
  • 嵌套的时候根据选择字段来计算。如果和RollUp一致则效果一致,如果范围不一样则效果不一样。
D. 作用

一般用于过程检查以及链接回表

E. 案例

表3

  • 单独使用效果和RollUp一样
代码语言:javascript复制
Summarize('表3', 
           Rollup('表3'[姓名]),'表3'[学校],
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名]
Summarize('表3', 
           RollupGroup('表3'[姓名]),'表3'[学校],
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名]

解释: RollupRroup单独使用,效果和RollUp一样。因为未选择全部列,所以返回的是未选择列的汇总也就是学校的小计。

  • 嵌套使用(RollupRound需嵌套在RollUp内)——分组字段范围一致
代码语言:javascript复制
Summarize('表3', 
           Rollup(RollupGroup('表3'[姓名],'表3'[学校])),
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名],'表3'[学校]

解释: 根据2个字段,姓名和学校进行的汇总,然后再对2个字段的小计进行汇总。

  • 嵌套使用(RollupRound需嵌套在RollUp内)——分组字段范围不一致
代码语言:javascript复制
Summarize('表3', 
           Rollup(RollupGroup('表3'[姓名]),'表3'[学校]),
           "总成绩", 
           Sum('表3'[成绩]))
           Order By '表3'[姓名],'表3'[学校]

解释: 先汇总姓名,学校的值;然后在小计姓名的值;最后返回姓名小计的汇总。

6. ROLLUPADDISSUBTOTAL

A. 语法
代码语言:javascript复制
ROLLUPADDISSUBTOTAL ( [<GrandtotalFilter>], <GroupBy_ColumnName>, <Name> [, [<GroupLevelFilter>] [, <GroupBy_ColumnName>, <Name> [, [<GroupLevelFilter>] [, … ] ] ] ] )

位置

参数

描述

可选第1参数

GrandtotalFilter

总计的筛选

可重复第2参数

GroupBy_ColumnName

返回的列名

可重复第3参数

Name

增加的列名

可选第4参数

GroupLevelFilter

筛选应用于当前级别

B. 返回

增加一列判断是否是总计

C. 注意事项

只能用于SUMMARIZECOLUMNS函数中

D. 作用

判断是否为总计。

E. 案例
代码语言:javascript复制
SummarizeColumns(RollupAddisSubtotal('表3'[姓名],"判断"),'表3'[学校],
                 "总成绩",
                 Sum('表3'[成绩]))

在小计的同时加上一列作为判断当前汇总时是否是小计。

7. ADDMISSINGITEMS

A. 语法
代码语言:javascript复制
ADDMISSINGITEMS ( [<ShowAll_ColumnName> [, <ShowAll_ColumnName> [, … ] ] ], <Table> [, <GroupBy_ColumnName> [, [<FilterTable>] [, <GroupBy_ColumnName> [, [<FilterTable>] [, … ] ] ] ] ] ) )

位置

参数

描述

可选重复第1参数

ShowAll_ColumnName

返回度量值为空的列

可选第2参数

Table

度量值计算的表

可选重复第3参数

GroupBy_ColumnName

分组依据的列

可选重复第4参数

FilterTable

筛选的表

B. 返回

表——需要显示的列及汇总依据列及值生成的表。

C. 注意事项

如果和ROLLUPISSUBTOTAL和ISSUBTOTAL函数一起使用,参数要一致

D. 作用

重新添加包含空度量值的行

E. 案例
代码语言:javascript复制
AddMissingItems ('表3'[姓名],
                SummarizeColumns( '表3'[姓名], 
                                  "总成绩",
                                  Sum ( '表3'[成绩] )
                                ),
                 '表3'[姓名]
                 )

解释: 如果单纯通过SummarizeColumns函数进行分组的话,如果计算值为0的话,分组的内容会缺失,但是通过AddMissingItems函数可以进行恢复。上面姓名为无值这项因为成绩为空,通过此函数可以在分组汇总后进行恢复显示。

8. ROLLUPISSUBTOTAL

A. 语法
代码语言:javascript复制
ROLLUPISSUBTOTAL ( [<GrandtotalFilter>], <GroupBy_ColumnName>, <IsSubtotal_ColumnName> [, [<GroupLevelFilter>] [, <GroupBy_ColumnName>, <IsSubtotal_ColumnName> [, [<GroupLevelFilter>] [, … ] ] ] ] )

位置

参数

描述

可选第1参数

GrandtotalFilter

应用于汇总行的筛选

可重复第2参数

GroupBy_ColumnName

汇总依据的列

可重复第3参数

IsSubtotal_ColumnName

增加一列判断是否汇总

可选第4参数

GroupLevelFilter

筛选应用于当前级别

B. 返回

不返回值,仅标记是否小计

C. 注意事项

只在ADDMISSINGITEMS内使用。

D. 作用

将汇总组合添加的列配对,返回一个逻辑值。

E. 案例
代码语言:javascript复制
AddMissingItems (
    '表3'[姓名],
    SUMMARIZECOLUMNS ( ROLLUPADDISSUBTOTAL('表3'[姓名],"判断"), "总成绩", SUM ( '表3'[成绩] ) ),
    '表3'[姓名]
)

解释: 添加判断一列去判断是否汇总小计,返回逻辑值。同时因为addmissingitems的原因把无成绩的这个也显示出来了。当然无度量的也就不存在判断不判断了,所以判断这里为空。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

0 人点赞