共用方式為


CALCULATETABLE

適用於:匯出數據行計算數據表量值視覺計算

評估已修改篩選內容中的數據表運算式。

注意

還有 CALCULATE 函式。 除了修改套用至傳回 純量值的運算式 篩選內容,它會執行完全相同的功能。

語法

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

參數

術語 定義
expression 要評估的數據表運算式。
filter1, filter2,… (選擇性)定義篩選條件或篩選修飾詞函式的布爾表達式或數據表表達式。

做為第一個參數的表達式必須是模型數據表或傳回數據表的函式。

篩選可以是:

  • 布爾篩選表達式
  • 數據表篩選表達式
  • 篩選修改函式

當有多個篩選條件時,會使用 AND邏輯運算符來評估它們。 這表示所有條件都必須同時 TRUE

布爾篩選表達式

布爾表達式篩選條件是評估為 TRUEFALSE的表達式。 他們必須遵守數個規則:

  • 它們只能參考單一數據行。
  • 它們無法參考量值。
  • 它們無法使用巢狀 CALCULATE 函式。

從 Power BI Desktop 的 2021 年 9 月版本開始,下列專案也適用於:

  • 除非它們當做自變數傳遞至聚合函數,否則它們無法使用掃描或傳回數據表的函式。
  • 它們 可以 包含傳回純量值的聚合函數。

數據表篩選表達式

數據表表達式篩選條件會將數據表物件套用為篩選。 它可以是模型數據表的參考,但更有可能是傳回數據表物件的函式。 您可以使用 FILTER 函式來套用複雜的篩選條件,包括布爾篩選表達式無法定義的篩選條件。

篩選修飾詞函式

篩選修飾詞函式可讓您執行更多動作,而不只是新增篩選。 它們提供您在修改篩選內容時的額外控制項。

功能 目的
REMOVEFILTERS 從數據表的一或多個數據行,或從單一數據表的所有數據行中移除所有篩選或篩選。
ALL 1ALLEXCEPTALLNOBLANKROW 從一或多個數據行移除篩選,或從單一數據表的所有數據行中移除篩選。
KEEPFILTERS 新增篩選,而不移除相同數據行上的現有篩選。
USERELATIONSHIP 參與相關數據行之間的非作用中關聯性,在此情況下,作用中關聯性會自動變成非作用中。
CROSSFILTER 修改篩選方向(從兩者到單一,或從單一到兩者)或停用關聯性。

1ALL 函式及其變體會同時做為篩選修飾詞和傳回數據表物件的函式。 如果您的工具支援 REMOVEFILTERS 函式,最好使用它來移除篩選。

傳回值

值的數據表。

言論

  • 提供篩選表達式時,CALCULATETABLE 函式會修改篩選內容來評估表達式。 針對每個篩選表達式,當篩選表達式未包裝在 KEEPFILTERS 函式中時,會有兩個可能的標準結果:

    • 如果數據行(或數據表)不在篩選內容中,則會將新的篩選新增至篩選內容,以評估表達式。
    • 如果數據行(或數據表)已經在篩選內容中,新的篩選將會覆寫現有的篩選條件,以評估 CALCULATETABLE 表達式。
  • 在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。

下列範例會使用 CALCULATETABLE 函式來取得 2006 年因特網銷售的總和。 此值稍後用來計算與 2006 年所有銷售額相比的因特網銷售比率。

下列公式:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)

結果如下表:

數據列標籤 因特網SalesAmount_USD CalculateTable 2006 Internet Sales 因特網銷售與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