Lezen in het Engels

Delen via


KEEPFILTERS

Van toepassing op:berekende kolomberekende tabelMeasureVisuele berekening

Hiermee wijzigt u hoe filters worden toegepast tijdens het evalueren van een CALCULATEorCALCULATETABLE functie.

Syntaxis

KEEPFILTERS(<expression>)  

Parameters

Term Definitie
expression Elke expressie.

value retourneren

Een tabel met values.

Opmerkingen

  • U gebruikt KEEPFILTERS in de context CALCULATEandCALCULATETABLE functies om het standaardgedrag van deze functies te overschrijven.

  • Standaard worden filter argumenten in functies zoals CALCULATE gebruikt als context voor het evalueren van de expressie, and als zodanig filter argumenten voor CALCULATEreplaceall bestaande filters in dezelfde kolommen. De nieuwe context die door het argument filter voor CALCULATE wordt uitgevoerd, is alleen van invloed op bestaande filters op kolommen die worden genoemd als onderdeel van het argument filter. Filters op andere kolommen dan de kolommen die worden genoemd in de argumenten van CALCULATEor andere related functies, blijven ongewijzigd effectand.

  • Met de functie KEEPFILTERS kunt u dit gedrag wijzigen. Wanneer u KEEPFILTERSgebruikt, worden bestaande filters in de huidige context vergeleken met de kolommen in de filter argumenten, and het snijpunt van deze argumenten wordt gebruikt als context voor het evalueren van de expressie. Het netto-effect boven een kolom is dat beide sets argumenten van toepassing zijn: zowel de filter argumenten die worden gebruikt in CALCULATEand de filters in de argumenten van de functie KEEPFILTER. Met andere woorden, terwijl CALCULATEfiltersreplace de huidige context KEEPFILTERSfilters toevoegt aan de huidige context.

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

Voorbeeld

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

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

  • Internetverkoop voor de staat Washington.

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

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

De vierde expressie berekent internetverkopen voor Washington and Oregon, terwijl de filter voor Washington and Brits-Columbia wordt toegepast.

De next expressie berekent internetverkopen voor Washington and Oregon, maar gebruikt KEEPFILTERS; de filter voor Washington and 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 sample database AdventureWorks DW, worden de volgende resultaten verkregen.

Kolom 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

Notitie

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

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

Next, bekijk de expressie [$$ in WA !!]. U vraagt zich misschien af hoe deze formule de value voor verkoop in Washington and niets anders kan retourneren, omdat het argument filter Oregon and de buitenste CALCULATE expressie een filter bevat in Washington and British Columbia. Het antwoord is dat KEEPFILTERS het standaardgedrag van CALCULATEand een extra filtertoevoegt. Omdat het snijpunt van filters wordt gebruikt, wordt now de buitenste filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") toegevoegd aan het filter argument '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" de filter die wordt toegepast bij het evalueren van de expressie.

Filter functies
CALCULATE functie
CALCULATETABLE functie