修改篩選內容
您可以使用 CALCULATE
DAX 函式來修改公式中的篩選內容。 CALCULATE 函式的語法如下:
CALCULATE(<expression>, [[<filter1>], <filter2>]…)
函式需要傳入運算式,其可傳回純量值和您所需的多個篩選條件。 運算式可以是量值 (也就是命名運算式) 或任何可在篩選內容中進行評估的運算式。
篩選條件可以是布林運算式或資料表運算式。 當您修改篩選內容時,也可以傳入篩選修改函式,以提供額外的控制。
當您有多個篩選器時,會使用 AND
邏輯運算子來進行評估,這表示所有條件都必須同時為 TRUE
。
注意
CALCULATETABLE
DAX 函式會執行與 CALCULATE
函式完全相同的功能,但其會修改套用至傳回資料表物件運算式的篩選內容。 在此課程模組中,說明和範例會使用 CALCULATE
函式,但請記住,這些案例也適用於 CALCULATETABLE
函式。
套用布林運算式篩選條件
布林運算式篩選條件是評估為 TRUE
或 FALSE
的運算式。 布林值篩選條件必須遵守下列規則:
- 其只能參考單一資料行。
- 其不可參考量值。
- 其不能使用掃描或傳回包含彙總函式 (例如
SUM
) 資料表的函式。
在此範例中,您將建立量值。 首先,下載並開啟 Adventure Works DW 2020 M06.pbix 檔案。 然後,新增下列量值到 Sales 資料表,以使用紅色產品的布林運算式篩選條件來篩選 [收益] 量值。
Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")
將 Revenue Red 量值新增至報表 Page 1 上的資料表視覺效果。
在下一個範例中,下列量值會依多個色彩篩選 Revenue 量值。 請注意,使用 IN
運算子,後面接著色彩值的清單。
Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})
下列量值會依昂貴的產品來篩選 Revenue 量值。 昂貴的產品是標價大於 1000 美元的產品。
Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)
套用資料表運算式篩選條件
資料表運算式篩選條件會套用資料表物件做為篩選條件。 其可以是模型資料表的參考;不過,這可能是傳回資料表物件的 DAX 函式。
通常,您會使用 FILTER
DAX 函式來套用複雜的篩選條件,包括無法由布林值篩選條件運算式定義的條件。
FILTER
函式會歸類為迭代器函式,因此您會傳入資料表或資料表運算式,以及評估該資料表每個資料列的運算式。
FILTER
函式會傳回資料表物件,其結構與資料表傳入的結構完全相同。 其資料列是所傳入資料列的子集,表示運算式評估為 TRUE
的資料列。
下列範例顯示使用 FILTER
函式的資料表篩選條件運算式:
Revenue High Margin Products =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[List Price] > 'Product'[Standard Cost] * 2
)
)
在此範例中,FILTER
函式會篩選 [產品] 資料表中的所有資料列 (位於篩選內容中)。 產品的每個資料列如果其清單價格超過其標準成本,則會顯示為已篩選資料表的資料列。 因此,會針對 FILTER
函式傳回的所有產品評估 Revenue 量值。
傳入 CALCULATE
函式的所有篩選條件運算式都是資料表篩選條件運算式。 布林值篩選條件運算式是一個簡短的標記法,用來改善撰寫和閱讀體驗。 就內部而言,Microsoft Power BI 會將布林值篩選條件運算式轉譯為資料表篩選條件運算式,這就是其轉譯您 Revenue Red 量值定義的方式。
Revenue Red =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[Color] = "Red"
)
)
篩選行為
當您將篩選條件運算式新增至 CALCULATE
函式時,會發生兩種可能的標準結果:
- 如果資料行 (或資料表) 不在篩選內容中,則會將新的篩選條件新增至篩選內容,以評估
CALCULATE
運算式。 - 如果資料行 (或資料表) 已在篩選內容中,則新的篩選條件將會覆寫現有的篩選條件,以評估
CALCULATE
運算式。
下列範例示範如何將篩選條件運算式新增至 CALCULATE
函式。
注意
在每個範例中,不會對資料表視覺效果套用任何篩選條件。
如同先前的活動,Revenue Red 量值已新增至依區域分組並顯示收益的資料表視覺效果。
因為不會對 [產品] 資料表中的 [色彩] 資料行套用任何篩選條件,所以量值的評估會新增新的篩選條件來篩選內容。 在第一個資料列中,$2,681,324.79 的值是針對在澳洲區域銷售的紅色產品。
將資料表視覺效果的第一個資料行從 [區域] 切換為 [色彩] 會產生不同的結果,因為 [產品] 資料表中的 [色彩] 資料行現在是在篩選內容中。
Revenue Red 量值公式會在 Product 資料表的 Color 資料行上新增篩選,藉以評估 Revenue 量值。 因此,在此視覺效果中,會依色彩分組,量值公式會以新的篩選條件覆寫篩選內容。
此結果不一定是您想要的。 下一個單元會介紹 KEEPFILTERS
DAX 函式,這是一種篩選修改函式,可讓您用來保留篩選條件,而不是將其覆寫。