暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PowerBI中Summarize的使用方法

BISeven 2021-03-31
789

以下是自己在使用summarize的时候踩过的坑,现分享在这里


一. 定义 

关于summarize函数我的理解是分组聚合函数,以某些字段进行分组,然后再对某些字段进行聚合运算。更准确的定义可以参考官方文档。

其语法:SUMMARIZE (<table>,<groupBy_columnName>[,groupBy_columnName ]…[, <name>,<expression> ]…)

该函数至少要有两个参数即<table>和<groupby_columnName> 


二. 用法

在这里我想分享的内容有2点:1. 参数groupby_columnName 可以是参数table中列也可以是table的相关表中的列2. 当summarize 嵌套 summarize时,外层的summarize不会对新建列进行聚合


三.示例 本次所使用的数据如下:

学生表:


班级表:

成绩表:



1. 参数groupby_columnName 可以是参数table中列也可以是table的相关表中的列

1.1 如何生成每名学生的汇总成绩表?



1.2. 如何生成每个班级总分,班级是在另外一张表中,这个时候可以用相关表中的列。



也可以这样



2. 当summarize 嵌套 summarize时,外层的summarize不会根据新建的列进行聚合了,比如在这里想要看一下学生修课数量的分布,比如统计一下选1,2,3门课学生的数量的。


第一步应该先计算出每位学生选修课程的数量,分组列为学生姓名,然后计数 第二步在第一步的基础上再计算出选修课程数量的数量,这时分组列应该为学生选修课程的数量了,然后再计数

经过以上分析,可以利用summarize嵌套summrize进行计算

正确的结果应该为 选2门课的有4名学校,选1门课的有1名学生,很显然 上述结果是不正确的,无论选1门还是2门课的学生都是5名,那像这种情况都该怎么解决?



上述情况有2种解决办法,在嵌套summarize中,外层summarize不会对新建列进行聚合了,那可以避免对新建列进行聚合

方法一:我们观察到t1表中有2列,一列是[姓名], 另外一列是[数量],既然不能聚合新建列[数量], 那么我可以计算 [姓名]列,正确结果可见下图

正确结果如下:

法二将第二个summarize 换成groupby


四. 小结

1. 参数groupby_columnName 可以是参数table中列也可以是table的相关表中的列

2. 当summarize 嵌套 summarize时,外层的summarize不会对新建的进行聚合, 在这里提到了两种解决方法,但是方法1还是有局限的,如果必须得对新建列进行聚合,那么方法一就不再起作用了,可以参考方法2


其他关于summarize的详细信息可参考

https://www.powerbigeek.com/understanding-summarize/

https://docs.microsoft.com/en-us/dax/summarize-function-dax


文章转载自BISeven,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论