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'[姓名]
代码语言:javascript复制解释: 因为RollUp包含了全部的汇总依据的组,所以返回时多了一个姓名小计。
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一样
Summarize('表3',
Rollup('表3'[姓名]),'表3'[学校],
"总成绩",
Sum('表3'[成绩]))
Order By '表3'[姓名]
Summarize('表3',
RollupGroup('表3'[姓名]),'表3'[学校],
"总成绩",
Sum('表3'[成绩]))
Order By '表3'[姓名]
解释: RollupRroup单独使用,效果和RollUp一样。因为未选择全部列,所以返回的是未选择列的汇总也就是学校的小计。
- 嵌套使用(RollupRound需嵌套在RollUp内)——分组字段范围一致
Summarize('表3',
Rollup(RollupGroup('表3'[姓名],'表3'[学校])),
"总成绩",
Sum('表3'[成绩]))
Order By '表3'[姓名],'表3'[学校]
解释: 根据2个字段,姓名和学校进行的汇总,然后再对2个字段的小计进行汇总。
- 嵌套使用(RollupRound需嵌套在RollUp内)——分组字段范围不一致
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的原因把无成绩的这个也显示出来了。当然无度量的也就不存在判断不判断了,所以判断这里为空。
如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。