CALCULATETABLE
評估已修改 filter 內容中的數據表運算式。
語法
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
參數
術語 | 定義 |
---|---|
expression |
要評估的數據表運算式。 |
filter1, filter2,… |
(選擇性)布爾表達式 or 定義 filtersorfilter 修飾詞函式的數據表運算式。 |
做為 first 參數的表達式必須是模型數據表,or 傳回數據表的函式。
Filters 可以是:
- 布爾值 filter 表達式
- 數據表 filter 表示式
- Filter 修改函式
當有多個 filters時,會使用 AND邏輯運算符來評估它們。 這表示 all 條件必須在相同的 timeTRUE
。
布爾值 filter 表達式
布爾表達式 filter 是評估為 TRUE
orFALSE
的表達式。 他們必須遵守數個規則:
- 它們只能參考單一數據行。
- 它們無法參考量值。
- 它們無法使用巢狀 CALCULATE 函式。
從 2021 年 9 月版的 Power BI Desktop 開始,下列專案也適用於:
- 除非它們以自變數的形式傳遞至聚合函數,否則它們無法使用掃描 or 傳回數據表的函式。
- 它們 可以 包含傳回純量 value的聚合函數。
數據表 filter 表示式
數據表表達式 filter 會將數據表物件套用為 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
values的數據表。
言論
提供 filter 表示式時,CALCULATETABLE 函式會將 filter 內容修改為 evaluate 表達式。 針對每個 filter 表示式,當 filter 表示式 not 包裝在 KEEPFILTERS 函式中時,會有兩個可能的標準結果:
- If 數據行(or 數據表)不在 filter 內容中,則會將新的 filters 新增至 filter 內容,以 evaluate 表達式。
- If 數據行(or 數據表)已經位於 filter 內容中,新的 filters 將會覆寫現有的 filters,以 evaluateCALCULATETABLE 表達式。
在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。
例
下列範例會使用 CALCULATETABLE 函式來取得 2006 年因特網銷售 sum。 這個 value 後來用來 calculate 與2006年 yearall 銷售額相比,因特網銷售的比例。
下列公式:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
結果如下表:
數據列標籤 | 因特網SalesAmount_USD | CalculateTable 2006 因特網銷售 | 因特網銷售與2006比率 |
---|---|---|---|
2005 | $2,627,031.40 | $5,681,440.58 | 0.46 |
2006 | $5,681,440.58 | $5,681,440.58 | 1.00 |
2007 | $8,705,066.67 | $5,681,440.58 | 1.53 |
2008 | $9,041,288.80 | $5,681,440.58 | 1.59 |
總計 | $26,054,827.45 | $5,681,440.58 | 4.59 |