1. 程式人生 > 其它 >使用ADDCOLUMNS 和 SUMMARIZE的組合

使用ADDCOLUMNS 和 SUMMARIZE的組合

先說結論,建議不要使用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