深入学习Power BI中这个强大的函数:SUMMARIZE(power bi sum函数)

出境入境2024-03-12 05:10小乐

深入学习Power BI中这个强大的函数:SUMMARIZE(power bi sum函数)

SUMMARIZE函数非常强大,一旦掌握了它看起来就非常好用,所以我会专门写一篇文章来介绍这个函数。至于是否必须使用该功能,请先阅读后再决定。 SUMMARIZE,纯粹从英语语义来看,意思是汇总、汇总,其功能确实是汇总,并且可以返回一个汇总表。您可以从官方文档https://docs.microsoft.com/en-us/dax/summarize-function-dax查看该函数的描述。它的参数非常复杂,难以理解。参数有很多,有些参数是可选的。可重复。直接从文档中理解并不容易。我们可以通过例子来理解它的用法。它的许多参数是可选的。让我们从参数少到参数多一步步看一下它的功能。 01 |从维度表中提取以下表达式将提取唯一的产品名称:

维度表1=SUMMARIZE('订单','订单'[产品名称])

当SUMMARIZE函数的第一个参数是表并且第二个参数是列时,它将返回该列的唯一列表。其功能与VALUES类似。不过,SUMMARIZE函数还可以继续添加第三个和第四个参数列.请参见以下表达式的返回结果,

维度表2=SUMMARIZE('订单','订单'[产品名称],'日期表'[年份])

当SUMMARIZE 参数表后跟多列时,它将返回这些列的有效组合,类似于笛卡尔积。和笛卡尔积稍有不同的是,如果订单表中不存在这个组合,那么在返回的列表中,不会出现这一行。例如,如果2016 年没有销售智能手表,则上面的表达式将不会有2016 年智能手表行。 02 |返回汇总表根据上面的表达式,我们继续添加参数如下:

汇总表1=SUMMARIZE('订单', '日期表'[年份], '订单'[产品名称], \'总销售额\',SUM('订单'[销售额]))

当SUMMARIZE参数后面跟有列名和表达式时,它会自动计算并返回分组汇总表。这是函数的本质作用,也符合它的字面意思。这个功能非常好用,也是我们最常使用的地方。 03 |返回包含总计的汇总表。这是SUMMARIZE的高级功能。在上面表达式中的分组列周围加上一层ROLLUP,看看效果如何?

汇总表2=SUMMARIZE('订单', ROLLUP('日期表'[年份],'订单'[产品名称]), \'总销售额\',SUM('订单'[销售额]))

您可以看到汇总表下方还有几行总计。这就是ROLLUP参数的作用。它仅由SUMMARIZE 在内部用于计算子类别的小计和总计。 SUMMARIZE 中可以使用的另一个参数是ROLLUPGROUP。在上面的表达式中使用ROLLUPGROUP 代替ROLLUP 可以返回相同的结果。但是,如果我们在上面的表达式ROLLUP 中再放入一层ROLLUPGROUP,

汇总表3=SUMMARIZE('订单', ROLLUP(ROLLUPGROUP('日期表'[年份],'订单'[产品名称])), \'总销售额\',SUM('订单'[销售额]) )

分组小计消失,仅返回总计。 ROLLUP和ROLLUPGROUP的组合可以避免小计,只返回总计。这使得汇总表看起来更像Excel 中的数据透视表。关于ROLLUP和ROLLUPGROUP参数,其实它们的求和函数并不常用,但却导致很多人认为SUMMARIZE很复杂。如果你也有同样的感觉,那么你就不需要深究这两个参数的用法了,因为你基本上不知道如何使用它们。使用它们。 SUMMARIZE 最常用的函数是上面的第二个函数。让我们回顾一下这个用法。返回汇总表确实很实用,但是这是最佳的写法吗?使用ADDCOLUMNS 返回汇总表02 示例中的表达式。您还可以将其替换为以下表达式,

汇总表4=ADDCOLUMNS( SUMMARIZE( '订单', '日期表' [年份], '订单' [产品名称] ), \'总销售额\',CALCULATE(SUM('订单'[销售额])) ) 是使用ADDCOLUMNS 函数根据SUMMARIZE 生成的分组添加列以计算销售汇总。可以返回相同的结果,但就性能而言,它比简单地使用SUMMARIZE 更好。由于性能和内部兼容性原因,不建议使用SUMMARIZE函数进行汇总。您可以使用上面的ADDCOLUMNS 和SUMMARIZE 组合来代替。还有一个性能更好的新函数:SUMMARIZECOLUMNS。使用SUMMARIZECOLUMNS返回汇总表仍然会生成上面的汇总表。如何编写SUMMARIZECOLUMNS:

汇总表5=SUMMARIZECOLUMNS('日期表'[年份], '订单'[产品名称],\'销售总额\',CALCULATE(SUM('订单'[销售]))) 是不是看起来更简洁了呢?它的第一个参数不再需要表格,而是直接是分组列。在实践中,它的性能比ADDCOLUMNS和SUMMARIZE的组合要好,当然也远远好于SUMMARIZE。生成汇总表时,建议直接使用SUMMARIZECOLUMNS(关于性能,可以使用DAX Studio进行测试)。 SUMMARIZECOLUMNS应该是代替SUMMARIZE出现的,它可以实现SUMMARIZE的功能; SUMMARIZE的内部参数,如ROLLUPGROUP等,在SUMMARIZECOLUMNS中也存在,并且还有更多其他的内部参数可以调用,但是对于普通DAX用户来说,可能用不到,所以就不再介绍了。如果想深入理解请自行查看函数文档。总结

当提取多列的有效组合时,可以使用SUMMARIZE 返回汇总表。建议使用SUMMARIZECOLUMNS。我是才武,PowerBI星球的作者。我在微信公众号“PowerBI星球”回复“PowerBI”,获得《七天入门Power BI》。电子书,轻松入门PowerBI。

如果喜欢的话,别忘了点赞和转发哦。

猜你喜欢