先说结论,建议不要使用SUMMARIZE函数来增加扩展列,而使用ADDCOLUMNS 和 SUMMARIZE的组合。虽然SUMMARIZE 函数被标记为弃用,但是有时使用起来真的非常方便。
ADDCOLUMNS( SUMMARIZE( <table>, <group by column> ), <column_name>, CALCULATE( <expression> ) )
注意,当<expression>包含聚合函数时,CALCULATE函数是必须的。这是因为ADDCOLUMNS函数根据SUMMARIZE的结果产生一个行上下文(row context),这个行上下文不会自动转换为过滤器上下文(filter context),而CALCULATE(<expression>) 会把行上下文转换为等价的过滤器上下文。
举个例子,使用以下的代码,来统计每个Country的函数,由于行上下文无法自动转换为filter context,迭代函数返回的是总行数:
ADDCOLUMNS ( SUMMARIZE ( Store, Store[Country] ), "Stores", COUNTROWS ( Store ) )
当添加CALCULATE函数后,CALCULATE函数把行上下文自动转换为filter context,统计的是每一个Coutnry对应的行数:
SUMMARIZE ( Store, Store[Country], "Stores", CALCULATE(COUNTROWS( Store )) )
参考文档:Best practices using SUMMARIZE and ADDCOLUMNS
标签:ADDCOLUMNS,CALCULATE,组合,SUMMARIZE,上下文,Store,函数 From: https://www.cnblogs.com/ljhdo/p/16966339.html