使用ADDCOLUMNS 和 SUMMARIZE的組合
阿新 • • 發佈:2022-12-08
先說結論,建議不要使用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 )) )