Delen via


KEEPFILTERS

Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening

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

Syntaxis

KEEPFILTERS(<expression>)

Parameters

Term Definitie
expression 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 filterargumenten voor CALCULATE alle bestaande filters over dezelfde kolommen vervangen. De nieuwe context die wordt beïnvloed door het filterargument voor CALCULATE 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 KEEPFILTERSgebruikt, worden alle 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, KEEPFILTERS filters toevoegt 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).

Voorbeeld

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

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 Waarde
[$$ 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.

Bekijk eerst de expressie [$$ in WA and 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 bevat voor Washington en Brits-Columbia. Het antwoord is dat het standaardgedrag van CALCULATE de buitenste filters in 'Geography'[State Province Code] overschrijft en zijn 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 de verkoop in Washington kan retourneren en niets anders, omdat het argumentfilter Oregon 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 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") 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.

filterfunctiesCALCULATE functieCALCULATETABLE functie