Zdieľať cez


KEEPFILTERS

Vzťahuje sa na: Vypočítaný stĺpec Vypočítaná tabuľka Výpočet mierky Vizuál

Upraví spôsob používania filtrov pri vyhodnocovaní funkcie CALCULATE alebo CALCULATETABLE.

Syntax

KEEPFILTERS(<expression>)  

Parametre

Obdobie Definícia
výraz Akýkoľvek výraz.

Vrátená hodnota

Tabuľka hodnôt.

Poznámky

  • Funkciu KEEPFILTERS môžete použiť v rámci funkcií CALCULATE a CALCULATETABLE na prepísanie štandardného správania týchto funkcií.

  • Predvolene sa vo funkciách, ako je napríklad CALCULATE, používajú argumenty filtra ako kontext vyhodnocovania výrazu. Argumenty filtra funkcie CALCULATE tým nahradia všetky existujúce filtre v rovnakých stĺpcoch. Nový kontext efektovaný argumentom filtra pre funkciu 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 funkcie CALCULATE alebo iných súvisiacich funkcií, zostávajú v platnosti a nemenia sa.

  • Funkcia KEEPFILTERS umožňuje toto správanie upraviť. Keď použijete funkciu 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é vo funkcii CALCULATE aj filtre v argumentoch funkcie KEEPFILTER. Inými slovami, keďže funkcia CALCULATE filtre nahradia aktuálny kontext, funkcia 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 funkciu 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 $

Poznámka

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ší výraz CALCULATE obsahuje filter pre Washington a Britskú Kolumbiu. Predvolené správanie funkcie 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ší výraz CALCULATE obsahuje filter vo Washingtone a Britskej Columbii. Odpoveďou je, že funkcia KEEPFILTERS upraví predvolené správanie funkcie 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, pri vyhodnocovaní výrazu sa použije výsledný filter 'Geography'[State Province Code]="WA" .

Funkcie filtrovania
Funkcia CALCULATE
Funkcia CALCULATETABLE