Condividi tramite


KEEPFILTERS

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

Modifica la modalità di applicazione dei filtri durante la valutazione di una funzione CALCULATE o CALCULATETABLE.

Sintassi

KEEPFILTERS(<expression>)

Parametri

Termine Definizione
expression Qualsiasi espressione.

Valore restituito

Tabella di valori.

Osservazioni

  • È possibile usare KEEPFILTERS all'interno del contesto CALCULATE e CALCULATETABLE funzioni per eseguire l'override del comportamento standard di tali funzioni.

  • Per impostazione predefinita, gli argomenti di filtro nelle funzioni come CALCULATE vengono usati come contesto per la valutazione dell'espressione e, di conseguenza, argomenti di filtro per CALCULATE sostituire tutti i filtri esistenti sulle stesse colonne. Il nuovo contesto applicato dall'argomento filtro per CALCULATE influisce solo sui filtri esistenti sulle colonne menzionate come parte dell'argomento filtro. I filtri sulle colonne diverse da quelle menzionate negli argomenti di CALCULATE o altre funzioni correlate rimangono effettive e non modificate.

  • La funzione KEEPFILTERS consente di modificare questo comportamento. Quando si usa KEEPFILTERS, tutti i filtri esistenti nel contesto corrente vengono confrontati con le colonne negli argomenti di filtro e l'intersezione di tali argomenti viene usata come contesto per la valutazione dell'espressione. L'effetto netto su una colonna è che entrambi i set di argomenti si applicano: entrambi gli argomenti filtro usati in CALCULATE e i filtri negli argomenti della funzione KEEPFILTER. In altre parole, mentre i filtri CALCULATE sostituiscono il contesto corrente, KEEPFILTERS aggiunge filtri al contesto corrente.

  • Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.

Esempio

L'esempio seguente illustra alcuni scenari comuni che illustrano l'uso della funzione KEEPFILTERS come parte di una formula CALCULATE o CALCULATETABLE.

Le prime tre espressioni ottengono dati semplici da usare per i confronti:

  • Internet Sales per lo stato di Washington.

  • Internet Sales per gli stati di Washington e Oregon (entrambi gli stati combinati).

  • Internet Sales per lo stato di Washington e la provincia della Columbia Britannica (entrambe le regioni combinate).

La quarta espressione calcola Internet Sales per Washington e Oregon, mentre viene applicato il filtro per Washington e British Columbia.

L'espressione successiva calcola Internet Sales per Washington e Oregon, ma usa KEEPFILTERS; il filtro per Washington e British Columbia fa parte del contesto precedente.

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

Quando questa espressione viene valutata rispetto al database di esempio AdventureWorks DW, vengono ottenuti i risultati seguenti.

Colonna Valore
[$$ 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

I risultati precedenti sono stati formattati in una tabella, invece di una singola riga, a scopo didattico.

Esaminare prima di tutto l'espressione [$$ in WA and OR ??]. Ci si potrebbe chiedere come questa formula potrebbe restituire il valore per le vendite a Washington e Oregon, poiché l'espressione CALCULATE esterna include un filtro per Washington e British Columbia. La risposta è che il comportamento predefinito di CALCULATE sostituisce i filtri esterni in 'Geography'[State Province Code] e sostituisce i propri argomenti di filtro, perché i filtri si applicano alla stessa colonna.

Esaminare quindi l'espressione [$$ in WA !!]. Ci si potrebbe chiedere come questa formula potrebbe restituire il valore per le vendite a Washington e nient'altro, poiché il filtro dell'argomento include Oregon e l'espressione esterna CALCULATE include un filtro in Washington e British Columbia. La risposta è che KEEPFILTERS modifica il comportamento predefinito di CALCULATE e aggiunge un filtro aggiuntivo. Poiché viene usata l'intersezione dei filtri, ora il filtro esterno 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") viene aggiunto all'argomento filtro 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR", . Poiché entrambi i filtri si applicano alla stessa colonna, il filtro risultante 'Geography'[State Province Code]="WA" è il filtro applicato durante la valutazione dell'espressione.

funzioni filterCALCULATE funzioneCALCULATETABLE