Condividi tramite


KEEPFILTERS

Si applica a: Calcolo visivo misura tabella calcolata colonna calcolata

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:

  • La funzione KEEPFILTERS si usa nel contesto delle funzioni CALCULATE e CALCULATETABLE per eseguire l'override del comportamento standard di queste funzioni.

  • Per impostazione predefinita, gli argomenti di filtro nelle funzioni come CALCULATE sono usati come contesto per la valutazione dell'espressione e, in quanto tali, gli argomenti di filtro per CALCULATE sostituiscono tutti i filtri esistenti sulle stesse colonne. Il nuovo contesto applicato dall'argomento di filtro per CALCULATE influisce solo sui filtri esistenti sulle colonne indicate come parte dell'argomento di filtro. I filtri su colonne diverse da quelle indicate negli argomenti di CALCULATE o di altre funzioni correlate rimangono validi e non vengono modificati.

  • La funzione KEEPFILTERS consente di modificare questo comportamento. Quando si usa KEEPFILTERS, qualsiasi filtro esistente nel contesto corrente viene confrontato con le colonne negli argomenti di filtro e l'intersezione di tali argomenti viene usata come contesto per valutare l'espressione. Il risultato finale su ogni colonna è che vengono applicati sia gli argomenti di filtro usati nella funzione CALCULATE sia i filtri negli argomenti della funzione KEEPFILTER. In altre parole, mentre i filtri di CALCULATE sostituiscono il contesto corrente, KEEPFILTERS aggiunge filtri al contesto corrente.

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

Esempio

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

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

  • Vendite Internet per lo stato di Washington.

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

  • Vendite Internet per lo stato di Washington e la provincia della British Columbia (entrambe le aree combinate).

La quarta espressione calcola le vendite Internet per gli stati di Washington e Oregon, mentre viene applicato il filtro per Washington e British Columbia.

L'espressione successiva calcola le vendite Internet per gli stati di 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, si ottengono 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 riportati sopra sono stati formattati come tabella, anziché in una singola riga, a scopo didattico.

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

Esaminare quindi l'espressione [$$ in WA !!]. Anche in questo caso ci si potrebbe chiedere come sia possibile che questa formula restituisca il valore solo per le vendite nello stato di Washington, dato che l'argomento di filtro include Oregon e l'espressione CALCULATE esterna include un filtro per Washington e British Columbia. La risposta è che KEEPFILTERS modifica il comportamento predefinito di CALCULATE e aggiunge un ulteriore filtro. Poiché viene usata l'intersezione dei filtri, ora il filtro esterno 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") vien aggiunto all'argomento di filtro 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR". Dal momento che entrambi i filtri si applicano alla stessa colonna, il filtro risultante 'Geography'[State Province Code]="WA" è il filtro che viene applicato quando viene valutata l'espressione.

Funzioni di filtro
Funzione CALCULATE
Funzione CALCULATETABLE