DAX中如何对SUMMARIZECOLUMNS结果按Name汇总Max Points?
解决DAX中按Name汇总Max Points总和的问题
你之前的写法错误在于两点:
- SUM是DAX聚合函数,必须用括号包裹目标列,即
SUM([Max Points])而非SUM[Max Points] - SUMMARIZE的聚合列需要指定列名,格式为
"新列名", <聚合表达式>
基于已有变量的正确写法
VAR DistinctValueTable = SUMMARIZECOLUMNS( 'MyTable'[Name], 'MyTable'[Year], "Max Points", MAX('MyTable'[Points]) ) VAR FinalResult = SUMMARIZE( DistinctValueTable, [Name], "Total Max Points", SUM([Max Points]) ) RETURN FinalResult
用SUMX替代的写法
如果觉得SUMMARIZE的逻辑不够直观,也可以用SUMX结合筛选来实现:
VAR DistinctValueTable = SUMMARIZECOLUMNS( 'MyTable'[Name], 'MyTable'[Year], "Max Points", MAX('MyTable'[Points]) ) VAR FinalResult = ADDCOLUMNS( VALUES(DistinctValueTable[Name]), "Total Max Points", SUMX(FILTER(DistinctValueTable, [Name] = EARLIER([Name])), [Max Points]) ) RETURN FinalResult
一步到位的嵌套写法
如果不需要保留中间表变量,可以直接嵌套SUMMARIZECOLUMNS,减少代码层级:
SUMMARIZECOLUMNS( 'MyTable'[Name], "Total Max Points", SUMX( SUMMARIZECOLUMNS('MyTable'[Year], "Yearly Max", MAX('MyTable'[Points])), [Yearly Max] ) )
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

