KEEPFILTERS

Van toepassing op: Berekende kolomBerekende tabelMetingVisuele berekening

Hiermee wijzigt u hoe filters worden toegepast tijdens het evalueren van een functie CALCULATE of CALCULATETABLE.

Syntaxis

KEEPFILTERS(<expression>)  

Parameters

Term Definitie
Expressie Elke expressie.

Retourwaarde

Een tabel met waarden.

Opmerkingen

  • U gebruikt KEEPFILTERS in de context calculate- en CALCULATETABLE-functies om het standaardgedrag van deze functies te overschrijven.

  • Filterargumenten in functies zoals CALCULATE worden standaard gebruikt als context voor het evalueren van de expressie, en als zodanig worden filterargumenten voor CALCULATE alle bestaande filters over dezelfde kolommen vervangen. De nieuwe context die door het filterargument voor CALCULATE wordt uitgevoerd, is alleen van invloed op bestaande filters op kolommen die worden genoemd als onderdeel van het filterargument. Filters op andere kolommen dan de kolommen die worden genoemd in de argumenten van CALCULATE of andere gerelateerde functies blijven van kracht en ongewijzigd.

  • Met de functie KEEPFILTERS kunt u dit gedrag wijzigen. Wanneer u KEEPFILTERS gebruikt, worden bestaande filters in de huidige context vergeleken met de kolommen in de filterargumenten en wordt het snijpunt van deze argumenten gebruikt als context voor het evalueren van de expressie. Het netto-effect op een kolom is dat beide sets argumenten van toepassing zijn: zowel de filterargumenten die worden gebruikt in CALCULATE als de filters in de argumenten van de functie KEEPFILTER. Met andere woorden, terwijl CALCULATE-filters de huidige context vervangen, voegt KEEPFILTERS filters toe aan de huidige context.

  • Deze functie wordt niet ondersteund voor gebruik in de DirectQuery-modus wanneer deze wordt gebruikt in regels voor beveiliging op rijniveau (berekende kolommen of beveiliging op rijniveau).

Opmerking

In het volgende voorbeeld worden enkele veelvoorkomende scenario's beschreven die het gebruik van de functie KEEPFILTERS demonstreren als onderdeel van een formule CALCULATE of CALCULATETABLE.

De eerste drie expressies verkrijgen eenvoudige gegevens die moeten worden gebruikt voor vergelijkingen:

  • Internetverkoop voor de staat Washington.

  • Internetverkoop voor de staten Washington en Oregon (beide staten gecombineerd).

  • Internetverkoop voor de staat Washington en de provincie Brits-Columbia (beide regio's gecombineerd).

De vierde expressie berekent internetverkopen voor Washington en Oregon, terwijl het filter voor Washington en British Columbia wordt toegepast.

De volgende expressie berekent internetverkopen voor Washington en Oregon, maar gebruikt KEEPFILTERS; het filter voor Washington en Brits-Columbia maakt deel uit van de vorige context.

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"  
      )  
)  

Wanneer deze expressie wordt geëvalueerd op basis van de voorbeelddatabase AdventureWorks DW, worden de volgende resultaten verkregen.

Kolom Weergegeven als
[$$ in WA] $ 2,467,248,34
[$$ in WA en OR] $ 3.638.239,88
[$$ in WA en BC] $ 4.422.588,44
[$$ in WA en OR ??] $ 3.638.239,88
[$$ in WA !!] $ 2,467,248,34

Notitie

De bovenstaande resultaten zijn opgemaakt in een tabel, in plaats van één rij, voor educatieve doeleinden.

Bekijk eerst de expressie [$$ in WA en OR ??]. U vraagt zich misschien af hoe deze formule de waarde voor de verkoop in Washington en Oregon kan retourneren, omdat de buitenste CALCULATE-expressie een filter voor Washington en Brits-Columbia bevat. Het antwoord is dat het standaardgedrag van CALCULATE de buitenste filters in 'Geography'[State Province Code] overschrijft en de eigen filterargumenten vervangt, omdat de filters van toepassing zijn op dezelfde kolom.

Bekijk vervolgens de expressie [$$ in WA !!]. U vraagt zich misschien af hoe deze formule de waarde voor verkoop in Washington kan retourneren en niets anders, omdat het argumentfilter Oregon bevat en de buitenste CALCULATE-expressie een filter bevat in Washington en Brits-Columbia. Het antwoord is dat KEEPFILTERS het standaardgedrag van CALCULATE wijzigt en een extra filter toevoegt. Omdat het snijpunt van filters wordt gebruikt, wordt nu het buitenste filter Geografie[Staatsprovinciecode]="WA" || 'Geography'[State Province Code]="BC") wordt toegevoegd aan het filterargument 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Omdat beide filters van toepassing zijn op dezelfde kolom, is het resulterende filter 'Geography'[State Province Code]="WA" het filter dat wordt toegepast bij het evalueren van de expressie.

Filterfuncties
CALCULATE, functie
CALCULATETABLE, functie