KEEPFILTERS
Vzťahuje sa na:vypočítaný stĺpec
vypočítanej tabuľky
vizuálového výpočtu
Upraví spôsob používania filtrov pri vyhodnocovaní funkcie CALCULATE alebo CALCULATETABLE.
Syntax
KEEPFILTERS(<expression>)
Parametre
Termín | Definícia |
---|---|
expression |
Akýkoľvek výraz. |
Vrátená hodnota
Tabuľka hodnôt.
Poznámky
Štandardné správanie týchto funkcií sa používa KEEPFILTERS v rámci kontextových CALCULATE a funkcií CALCULATETABLE.
Predvolene sa vo funkciách, ako je napríklad CALCULATE, používajú argumenty filtra ako kontext vyhodnocovania výrazu. Argumenty filtra pre CALCULATE nahradia všetky existujúce filtre v rovnakých stĺpcoch. Nový kontext efektovaný argumentom filtra pre CALCULATE ovplyvňuje iba existujúce filtre v stĺpcoch, ktoré sú uvedené ako súčasť argumentu filtra. Filtre v stĺpcoch, ktoré nie sú uvedené v argumentoch CALCULATE alebo iných súvisiacich funkcií, zostávajú v platnosti a nemenia sa.
Funkcia KEEPFILTERS umožňuje toto správanie upraviť. Ak použijete KEEPFILTERS, všetky existujúce filtre v aktuálnom kontexte sa porovnajú so stĺpcami v argumentoch filtra a priesečník týchto argumentov sa použije ako kontext na vyhodnotenie výrazu. Čistý efekt v akomkoľvek stĺpci je taký, že sa použijú obe množiny argumentov: argumenty filtra použité v CALCULATE aj filtre v argumentoch funkcie KEEPFILTER. Inými slovami, keďže CALCULATE filtre nahradia aktuálny kontext, KEEPFILTERS pridá filtre do aktuálneho kontextu.
Táto funkcia nie je podporovaná na použitie v režime DirectQuery, keď sa používa vo vypočítaných stĺpcoch alebo v pravidlách zabezpečenia na úrovni riadkov (RLS).
Príklad
Nasledujúci príklad vás prevedie niektorými bežnými scenármi, ktoré demonštrujú použitie funkcie KEEPFILTERS ako súčasť vzorca CALCULATE alebo CALCULATETABLE.
Prvé tri výrazy získavajú jednoduché údaje, ktoré sa majú použiť na porovnanie:
Internet Sales (internetový predaj) pre štát Washington.
Internet Sales (internetový predaj) pre štáty Washington a Oregon (obidva štáty spolu).
Internet Sales (internetový predaj) pre štát Washington a provinciu Britská Kolumbia (obidva regióny spolu).
Štvrtý výraz vypočíta hodnotu Internet Sales (internetový predaj) pre Washington a Oregon, zatiaľ čo sa použije filter pre Washington a Britskú Kolumbiu.
Nasledujúci výraz vypočíta hodnotu Internet Sales (internetový predaj) pre Washington a Oregon, ale používa KEEPFILTERS; filter pre Washington a Britskú Kolumbiu je súčasťou predchádzajúceho kontextu.
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"
)
)
Keď sa tento výraz vyhodnotí oproti ukážkovej databáze AdventureWorks DW, získajú sa tieto výsledky.
Stĺpec | Hodnota |
---|---|
[$$ 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 $ |
Nota
Vyššie uvedené výsledky boli na účely výuky naformátované do tabuľky namiesto jedného riadka.
Najprv preskúmajte výraz [$$ in WA and OR ??]
. Možno sa čudujete, ako by tento vzorec mohol vrátiť hodnotu predaja vo Washingtone a Oregone, pretože vonkajší CALCULATE výraz obsahuje filter pre Washington a Britskú Kolumbiu. Predvolené správanie CALCULATE totiž prepíše vonkajšie filtre v časti 'Geography'[State Province Code] a nahradí vlastné argumenty filtra, pretože filtre sa vzťahujú na rovnaký stĺpec.
Potom preskúmajte výraz [$$ in WA !!]
. Možno sa čudujete, ako by tento vzorec mohol vrátiť hodnotu predaja vo Washingtone a nič iné, pretože filter argumentov obsahuje Oregon a vonkajší CALCULATE výraz obsahuje filter vo Washingtone a Britskej Kolumbii. Odpoveďou je, že KEEPFILTERS upraví predvolené správanie CALCULATE a pridá ďalší filter. Keďže sa používa priesečník filtrov, vonkajší filter 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
sa pridá do argumentu filtra 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
.. Keďže oba filtre sa vzťahujú na rovnaký stĺpec, výsledný filter 'Geography'[State Province Code]="WA"
je filter, ktorý sa použije pri vyhodnocovaní výrazu.