事件
3月31日 下午11時 - 4月2日 下午11時
最終Microsoft Fabric、Power BI、SQL 和 AI 社群主導的活動。 2025 年 3 月 31 日至 4 月 2 日。
立即註冊評估修改 filter 內容中的表達式。
注意
還有 CALCULATETABLE 函式。 它會執行完全相同的功能,except 它會修改套用至傳回 數據表物件表達式的 filter 內容。
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
術語 | 定義 |
---|---|
expression |
要評估的表達式。 |
filter1, filter2,… |
(選擇性)布爾表達式 or 定義 filtersorfilter 修飾詞函式的數據表運算式。 |
用來作為 first 參數的表達式基本上與 measure相同。
Filters 可以是:
當有多個 filters時,可以使用 AND(&&
)邏輯運算符進行評估,這表示 all 條件必須 TRUE
,orOR(||
)邏輯運算符,這表示任一條件都可以 true。
布爾表達式 filter 是評估為 TRUE
orFALSE
的表達式。 他們必須遵守數個規則:
從 2021 年 9 月版的 Power BI Desktop 開始,下列專案也適用於:
Total sales on the last selected date =
CALCULATE (
SUM ( Sales[Sales Amount] ),
'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
)
數據表表達式 filter 會將數據表物件套用為 filter。 它可以是模型數據表的參考,但更有可能是傳回數據表物件的函式。 您可以使用 FILTER 函式來套用複雜的 filter 條件,包括布爾值 filter 表示式無法定義的條件。
Filter 修飾詞函式可讓您執行更多動作,而不只是新增 filters。 它們提供您在修改 filter 內容時的額外控制項。
功能 | 目的 |
---|---|
REMOVEFILTERS | 從單一數據表的一個 all 數據行中移除 allfilters,orfilters 從一個數據表 or 多個數據行中移除 or。 |
ALL 1、 ALLEXCEPT、 ALLNOBLANKROW | 從一個 or 多個數據行中移除 filters,or 從單一數據表的 all 數據行中移除。 |
KEEPFILTERS | 新增 filter,而不移除相同數據行上的現有 filters。 |
USERELATIONSHIP | 參與 related 數據行之間的非作用中關聯性,在此情況下,作用中關聯性會自動變成非作用中。 |
CROSSFILTER | 修改 filter 方向(從兩者到單一,or 從單一到兩者)or 停用關聯性。 |
1ALL 函式 and 其變體的行為,and 做為傳回數據表物件的函式 filter 修飾詞。 If 工具支援 REMOVEFILTERS 函式,最好使用它來移除 filters。
表達式結果的 value。
提供 filter 表示式時,CALCULATE 函式會將 filter 內容修改為 evaluate 表達式。 針對每個 filter 表示式,當 filter 表示式 not 包裝在 KEEPFILTERS 函式中時,會有兩個可能的標準結果:
不使用
在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。
下列 Sales 數據表 measure 定義會產生營收結果,但僅適用於色彩為藍色的產品。
本文中的範例可以搭配 sample Adventure Works DW 2020 Power BI Desktop 模型使用。 若要取得模型,請參閱 DAXsample 模型。
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
類別 | 銷售金額 | 藍色營收 |
---|---|---|
輔料 | $1,272,057.89 | $165,406.62 |
自行車 | $94,620,526.21 | $8,374,313.88 |
服裝 | $2,117,613.45 | $259,488.37 |
元件 | $11,799,076.66 | $803,642.10 |
總計 | $109,809,274.20 | $9,602,850.97 |
CALCULATE 函式會評估已修改 filter 內容中 Sales 數據表 Sales Amount 資料行的 sum。 新的 filter 會新增至 Product 資料表 Color 數據行,or,filter 會覆寫已套用至數據行的任何 filter。
下列 Sales 數據表 measure 定義會產生銷售 all 銷售管道銷售額的比率。
管道 | 銷售金額 | 總頻道收入 % |
---|---|---|
互聯網 | $29,358,677.22 | 26.74% |
轉銷商 | $80,450,596.98 | 73.26% |
總計 | $109,809,274.20 | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
DIVIDE 函式會將 Sales 數據表的總和 Sales Amount 資料行 value(在 filter 內容中)除以修改 filter 內容中的相同表達式。 這是使用 REMOVEFILTERS 函式來修改 filter 內容的 CALCULATE 函式,這是 filter 修飾詞函式。 它會從 Sales Order 數據表 Channel 數據行中移除 filters。
下列 Customer 數據表匯出數據行定義會將客戶分類為忠誠類別。 這是一個非常簡單的案例:當客戶產生的收入低於 2500 美元時,它們會分類為 Low;否則會 High。
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
在此範例中,數據列內容會轉換成 filter 內容。 它稱為 內容轉換。
事件
3月31日 下午11時 - 4月2日 下午11時
最終Microsoft Fabric、Power BI、SQL 和 AI 社群主導的活動。 2025 年 3 月 31 日至 4 月 2 日。
立即註冊