CALCULATETABLE
評估已修改篩選內容中的資料表運算式。
語法
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
參數
詞彙 | 定義 |
---|---|
expression | 要評估的資料表運算式。 |
filter1, filter2,… | (選擇性) 定義篩選條件或篩選修飾詞函式的布林值運算式或資料表運算式。 |
當作第一個參數使用的運算式,必須是會傳回資料表的模型資料表或函式。
篩選條件可以是:
- 布林值篩選條件運算式
- 資料表篩選條件運算式
- 篩選條件修改函式
當有多個篩選條件時,會使用 AND 邏輯運算子加以評估。 這表示所有條件都必須同時為 TRUE。
布林值篩選條件運算式
布林運算式篩選條件是評估為 TRUE 或 FALSE 的運算式。 必須遵守幾個規則:
- 其只能參考單一資料行。
- 其不可參考量值。
- 無法使用巢狀 CALCULATE 函式。
從 Power BI Desktop 2021 年 9 月的版本開始,也適用下列項目:
- 除非其做為引數傳遞至彙總函式,否則不能使用掃描或傳回資料表的函式。
- 其可以包含傳回純量值的彙總函式。
資料表篩選條件運算式
資料表運算式篩選條件會套用資料表物件做為篩選條件。 可以是模型資料表的參考,但更可能是傳回資料表物件的函式。 您可以使用 FILTER 函式來套用複雜的篩選條件,包括無法由布林值篩選條件運算式定義的條件。
篩選條件修飾詞函式
篩選條件修飾元函式可讓您執行的不僅僅是新增篩選條件。 當您修改篩選條件內容時,其會為您提供額外的控制。
函式 | 目的 |
---|---|
REMOVEFILTERS | 移除所有篩選條件,或從資料表的一或多個資料行或單一資料表的所有資料行中進行篩選。 |
ALL 1、 ALLEXCEPT、 ALLNOBLANKROW | 從一或多個資料行,或從單一資料表的所有資料行中移除篩選條件。 |
KEEPFILTERS | 新增篩選,但不移除相同資料行上的現有篩選條件。 |
USERELATIONSHIP | 參與相關資料行之間的非使用中關聯性,在此情況下,作用中關聯性會自動變成非使用中。 |
CROSSFILTER | 修改篩選條件方向 (從兩者到單一,或是從單一到兩者) 或停用關聯性。 |
1 ALL 函式及其變體,會同時作為篩選條件修飾詞和傳回資料表物件的函式。 如果您的工具支援 REMOVEFILTERS 函式,最好將其用來移除篩選條件。
傳回值
值的資料表。
備註
當提供篩選條件運算式時,CALCULATETABLE 函式會修改篩選條件內容來評估運算式。 針對每個篩選條件運算式,當篩選條件運算式未包裝在 KEEPFILTERS 函式中時,會有兩個可能的標準結果:
- 如果資料行 (或資料表) 不在篩選條件內容中,則會將新的篩選條件新增至篩選條件內容,以評估運算式。
- 如果資料行 (或資料表) 已經在篩選條件內容中,新的篩選條件將會覆寫現有的篩選條件,以評估 CALCULATETABLE 運算式。
在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
範例
下列範例會使用 CALCULATETABLE 函式來取得 2006 年的網際網路銷售總和。 此值會在稍後用來計算網際網路銷售與 2006 年所有銷售額的比例。
下列公式:
= 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 |