共用方式為


KEEPFILTERS

適用於:導出數據行計算數據表Measure視覺計算

修改評估 CALCULATEorCALCULATETABLE 函式時套用 filters 的方式。

語法

KEEPFILTERS(<expression>)

參數

術語 定義
expression 任何表達式。

傳回 value

values的數據表。

言論

  • 您可以使用內容 CALCULATEandCALCULATETABLE 函式內的 KEEPFILTERS 來覆寫這些函式的標準行為。

  • 根據預設,CALCULATE 等函式中的 filter 自變數會當做評估表達式的內容使用,and 例如 CALCULATEreplaceall 相同數據行上現有 filters 的 filter 自變數。 CALCULATE 之 filter 自變數所影響的新內容只會影響作為 filter 自變數一部分所提及之數據行的現有 filters。 Filters CALCULATE or 其他 related 函式自變數中所提及之數據行上的 Filters 會維持在 effectand 不變。

  • KEEPFILTERS 函式可讓您修改此行為。 當您使用 KEEPFILTERS時,目前內容中的任何現有 filters 會與 filter 自變數中的數據行進行比較,and 這些自變數的交集做為評估表達式的內容。 任何一個數據行上的 net effect 都是套用這兩組自變數:在 KEEPFILTER 函式的自變數 CALCULATEandfilters 中使用的 filter 自變數。 換句話說,CALCULATEfiltersreplace 目前的內容,KEEPFILTERS 會將 filters 新增至目前的內容。

  • 在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。

下列範例會引導您完成一些常見案例,示範如何使用 KEEPFILTERS 函式作為 CALCULATEorCALCULATETABLE 公式的一部分。

first 三個運算式會取得用於比較的簡單數據:

  • 華盛頓州的互聯網銷售。

  • 華盛頓州 and 俄勒岡州(兩州合併)的互聯網銷售。

  • 華盛頓州互聯網銷售 and 不列顛哥倫比亞省(兩個地區合併)。

第四個表達式計算華盛頓 and 俄勒岡州的因特網銷售,而華盛頓 and 不列顛哥倫比亞省的 filter 則適用。

next 表達式會計算華盛頓 and 俄勒岡州的因特網銷售,但會使用 KEEPFILTERS;華盛頓 and 不列顛哥倫比亞省的 filter 是先前內容的一部分。

EVALUATE ROW(
  "$$ in WA"
    , CALCULATE('Internet Sales'[Internet Total Sales]
                , 'Geography'[State Province Code]="WA"
      )
, "$$ in WA and OR"
    , CALCULATE('Internet Sales'[Internet Total Sales]
               , 'Geography'[State Province Code]="WA" 
                 || 'Geography'[State Province Code]="OR"
      )
, "$$ in WA and BC"
    , CALCULATE('Internet Sales'[Internet Total Sales]
               , 'Geography'[State Province Code]="WA" 
                 || 'Geography'[State Province Code]="BC"
      )
, "$$ in WA and OR ??"
    , CALCULATE(
          CALCULATE('Internet Sales'[Internet Total Sales]
                    ,'Geography'[State Province Code]="WA" 
                      || 'Geography'[State Province Code]="OR"
          )
          , 'Geography'[State Province Code]="WA" 
            || 'Geography'[State Province Code]="BC"
      )
, "$$ in WA !!"
    , CALCULATE(
          CALCULATE('Internet Sales'[Internet Total Sales]
                   , KEEPFILTERS('Geography'[State Province Code]="WA" 
                              || 'Geography'[State Province Code]="OR"
                     )
          )
          , 'Geography'[State Province Code]="WA" 
            || 'Geography'[State Province Code]="BC"
      )
)

針對 sample 資料庫 AdventureWorks DW 評估此運算式時,會取得下列結果。

Value
[$$ in WA] $ 2,467,248.34
[$$ in WA and OR] $ 3,638,239.88
[$$ in WA and BC] $ 4,422,588.44
[$$ in WA and OR ??] $ 3,638,239.88
[$$ in WA !!] $ 2,467,248.34

注意

上述結果已格式化為數據表,而不是單一數據列,以供教育之用。

First,檢查表示式,[$$ in WA and OR ??]。 您可能想知道此公式如何傳回俄勒岡州華盛頓 and 銷售 value,因為外部 CALCULATE 表達式包括華盛頓 and 不列顛哥倫比亞省的 filter。 答案是,CALCULATE 的預設行為會覆寫 'Geography'[State Province Code] 中的外部 filters,and 取代自己的 filter 自變數,因為 filters 會套用至相同的數據行。

Next,檢查表示式,[$$ in WA !!]。 您可能想知道這個公式如何傳回華盛頓銷售 value,and 別無他法,因為自變數 filter 包括俄勒岡州 and 外部 CALCULATE 表達式包括華盛頓 and 不列顛哥倫比亞省的 filter。 答案是,KEEPFILTERS 修改 CALCULATEand 的預設行為會新增額外的 filter。 由於使用了 filters 的交集,因此 now 外部 filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") 會新增至 filter 自變數 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"。 由於這兩個 filters 都套用至相同的數據行,因此產生的 filter'Geography'[State Province Code]="WA" 是評估表達式時所套用的 filter。

Filter 函式CALCULATE 函式CALCULATETABLE 函式