理解DAX語境(Context)目標是為了進行更複雜的資料分析,進一步理解如何從語境去影響數據。
整體而言,語境有兩類:
語境意指DAX函數之間的前後文與環境。像是資料表關聯、圖表之間的互動過濾都屬範疇內。
【篩選語境】
當使用者將量值或其他值的欄位放入樞紐分析表中,或是使用表格模型為基礎的報表中時,這一類位資料行套用報果視覺效果
【資料列語境】
意指當前資料列,也包含特定資料表中的所有資料值,通常使用具有疊代特性的函數(如:SumX、Filter、AddColumns這類)
新增資料行"新的資料與公式"並進行資料計算。DAx會從第一列進行疊代運算,逐筆建立資料列語境,導出的資料行使用彙總函數。如果在忽略資料列語境且無篩選語境的情境下,會產生的計算結果會是整個資料行的值。
依據第15日提及,Filter、All函數再加上DAX過濾資料的篩選語境。
Filter可以過濾資料,不過不會改變篩選語境,產生對資料表逐筆疊代的結果,取同時符合Filter條判斷和篩選語境的資料子集。
All會產生無視篩選語境的結果。
目前唯有兩個函數會影響篩選語境:Calculate和CalculateTable。這兩個函數的差異是Calculate回傳值;CalculateTable回傳資料表。
Calculate語法結構:
Calculate(<運算式>,<篩選條件1>,…<篩選條件N>)
當Calculate包含篩選條件時,會建立出新的「篩選語境」然後移除資料行裡已存在的篩選條件,改套用指定的新條件。