SUMMARIZE函数的结果是一张新表,具体语法:SUMMARIZE(表,分组字段1,分组字段2...,新字段名称1,字段表达式1,新字段名称2,字段表达式2...)
SUMMARIZE函数有多个参数,第一个参数为要做数据透视的表;第二个参数为分组的字段(Excel数据透视表中的行维度字段),如果有多个分组字段,就放在第二个参数、第三个参数...;下一个参数是生成新列的名称,再下一个参数是生成新列的表达式(例如计数、求和、求平均等),如果要生成多个字段,放在后面的参数里面。
举例,下图是不同产品不同月份的销售数量,现在要求出每个产品总的销售额:
因为有五个产品,所以得到的结果是一张表,点击建模选项卡下面的新表选项,并输入dax表达式:产品维度透视 = SUMMARIZE('Sheet1',Sheet1[产品],"累计销售",SUM(Sheet1[销售数量]))
其中【产品维度透视】是新表的名称,'Sheet1'是原表的名称,Sheet1[产品]是分组的字段,"累计销售"是生成新列的名称,SUM(Sheet1[销售数量])是新列的表达式,针对每个产品的销售额进行求和;得到结果如下:
举例2,基于原始数据,希望算出3个月内累计销售数量超过500的产品数量,基于上图可以看到产品A和产品C的销售数量是超过500的,结果是2个产品,但希望是通过原始数据表直接得到结果,这个怎么做?
先介绍两个其他的dax表达式:1.countx(表,列),统计的是表中某列的数量,返回的是一个值;2.filter(表,条件表达式),返回表中满足条件的记录,并生成一个新表,返回的是一个表;
因为最后结果是一个数值,点击建模选项卡下的新建度量值,输入函数:高于500的产品数量 = COUNTX(FILTER(SUMMARIZE('Sheet1',Sheet1[产品],"累计销售",SUM(Sheet1[销售数量])),[累计销售]>500),[累计销售]),得到如下结果:
函数解读:
1.嵌套了三个dax函数,其中最内层SUMMARIZE('Sheet1',Sheet1[产品],"累计销售",SUM(Sheet1[销售数量])),求的是每个产品的销售数量,并返回一个新表,新表做外外城函数的参数;
2.第二层FILTER(SUMMARIZE('Sheet1',Sheet1[产品],"累计销售",SUM(Sheet1[销售数量])),[累计销售]>500),返回的是由产品销售数量>500的记录组成的新表;
3.第三层COUNTX(FILTER(SUMMARIZE('Sheet1',Sheet1[产品],"累计销售",SUM(Sheet1[销售数量])),[累计销售]>500),[累计销售]),统计由filter函数返回表中【累计数量】列的个数;
4.【高于500的产品数量 】是度量值的名称。
如果有帮助,帮忙给个赞和关注~~
一起来学习dax表达式吧!学数据科学,上http://cda.cn