Power BI中summarizecolumns函数、sum函数实现SQL Server中的group by分组汇总

Power BI是微软开发的一款功能非常强大的的BI工具,可以制作非常美观的报表,但这个工具的核心是DAX,翻译为中文就是 数据分析表达式,有点类似于excel函数,但又很不一样。

DAX中的很多功能可以与SQL对应,但差异也很大。

 

下载Power BI 以及 输入实验数据,请参考前一篇文章: Power BI中selectcolumns函数+related函数实现SQL Server中的join 。

接下来就讲一讲,用Power BI中summarizecolumns函数、sum函数实现SQL Server中的group by分组汇总。

 

这里要实现 按照产品编码、产品名称 分组,对 数量 和 金额 汇总。

1、sql实现方式

两表关联+ group by 分组 + sum求和。

代码如下:

SELECT
	t2.产品编码,
	t2.产品名称,

	sum(t1.数量) as 数量合计,
	sum(t1.金额) as 金额合计
from 销售表 t1
INNER JOIN 产品表 t2
ON t1.产品编码 = t2.产品编码
group by 
	t2.产品编码,
	t2.产品名称

2、power bi中的实现方式

点击 建模 ---》 新表 ---》输入代码,然后再依次 点击 左侧、右侧  圆圈处的图标,就可以看到代码运算的结果 ,如下图:

 

代码如下:

summarizecolumns(
'产品表'[产品编码],
'产品表'[产品名称],
"数量合计",sum('销售表'[数量]),
"金额合计",sum('销售表'[金额])
)

和上面的sql代码相比,这个实现方式更加简洁,差异如下:

(1)省略了 join的步骤,power bi是通过建模来实现 表与表的关联的。

(2)分组是通过 summarizecolumns函数来实现的,参数共分为2种,第1种是 要分组的列名(如,'产品表'[产品编码]),第2种参数是 要进行的汇总计算(如,"数量合计",sum('销售表'[数量])  ),包含了: 列别名、对哪一列进行求和(这里引用了和sql一样的 sum 函数,进行求和)。