KEEPFILTERS
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.