KEEPFILTERS
filters CALCULATE or 関数の評価中に CALCULATETABLE を適用する方法を変更します。
構文
KEEPFILTERS(<expression>)
パラメーター
用語 | 定義 |
---|---|
expression |
任意の式。 |
value を返す
valuesのテーブル。
備考
コンテキスト KEEPFILTERSCALCULATEand 関数内で CALCULATETABLE を使用して、これらの関数の標準動作をオーバーライドします。
既定では、filter などの関数の CALCULATE 引数は、式を評価するためのコンテキストとして使用されます。and、同じ列に対する既存の filterCALCULATEreplaceallfilters 引数として使用されます。 filter の CALCULATE 引数の影響を受ける新しいコンテキストは、filters 引数の一部として指定された列の既存の filter にのみ影響します。 他の Filters 関数の引数に記載されているもの以外の列 CALCULATEorrelated 変更されない effectand 残ります。
KEEPFILTERS 関数を使用すると、この動作を変更できます。 KEEPFILTERSを使用すると、現在のコンテキスト内の既存の filters が filter 引数の列と比較 and、これらの引数の交差部分が式を評価するためのコンテキストとして使用されます。 1 つの列に対するネット effect は、両方の引数セットが適用されます。KEEPFILTER 関数の引数の filterCALCULATEand で使用される filters 引数の両方です。 つまり、現在のコンテキスト CALCULATEfiltersreplace 一方、KEEPFILTERS は現在のコンテキストに filters を追加します。
この関数は、行レベル セキュリティ (RLS) 規則 not 計算列で使用する場合に、DirectQuery モードで使用するためにサポート or。
例
次の例では、KEEPFILTERSCALCULATEor 数式の一部として CALCULATETABLE 関数を使用する一般的なシナリオについて説明します。
first 3 つの式は、比較に使用する単純なデータを取得します。
ワシントン州のインターネット販売。
ワシントン州 and オレゴン州のインターネット販売 (両方の州を組み合わせた)。
ワシントン州 and ブリティッシュ コロンビア州のインターネット販売 (両方のリージョンを組み合わせた)。
4 番目の式では、ワシントン and オレゴン州のインターネット売上が計算され、ワシントン filter ブリティッシュ コロンビアの and が適用されます。
next 式は、ワシントン州 and オレゴン州のインターネット売上を計算しますが、KEEPFILTERSを使用します。ワシントン filter ブリティッシュ コロンビアの and は、以前のコンテキストの一部です。
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 |
手記
上記の結果は、教育目的で 1 行ではなくテーブルに書式設定されました。
First、式を調べ、[$$ in WA and OR ??]
します。 外側の value 式にはワシントン and ブリティッシュ コロンビアの CALCULATE が含まれるため、ワシントン filter オレゴン州での売上の and をこの数式で返す方法を疑問に思うかもしれません。 答えは、CALCULATE が同じ列に適用されるため、filters の既定の動作は'Geography'[State Province Code]の外側の and をオーバーライド filter 独自の filters 引数に置き換わるということです。
Next、式を調べ、[$$ in WA !!]
します。
value 引数にはオレゴン and 外側の filter 式にワシントン州 and ブリティッシュ コロンビア州の CALCULATE が含まれているので、この数式がワシントンでの売上の filter を返す方法 and 疑問に思うかもしれません。 答えは、KEEPFILTERS が追加の CALCULATEを追加 andfilter の既定の動作を変更することです。
filters の交差部分が使用されるため、外側の nowfilter'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 になります。