Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Valuta un'espressione in un contesto di filtro modificato.
Nota
C'è anche la funzione CALCULATETABLE. Esegue esattamente la stessa funzionalità, ad eccezione del fatto che modifica il contesto di filtro applicato a un'espressione che restituisce un oggetto tabella .
Sintassi
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametri
| Termine | Definizione |
|---|---|
expression |
Espressione da valutare. |
filter1, filter2,… |
(Facoltativo) Espressioni booleane o espressioni di tabella che definiscono filtri o funzioni di modificatore di filtro. |
L'espressione usata come primo parametro funziona come una misura.
I filtri possono essere:
- Espressioni di filtro booleane
- Espressioni di filtro tabella
- Funzioni di modifica del filtro
Quando si usano più filtri, è possibile valutarli usando l'operatore AND logico (&&), il che significa che tutte le condizioni devono essere TRUEo dall'operatore OR logico (||), il che significa che entrambe le condizioni possono essere true. Per altre informazioni, vedere DAX Operatori logici degli operatori>.
Espressioni di filtro booleane
Un filtro di espressione booleana è un'espressione che restituisce TRUE o FALSE. Deve seguire diverse regole:
Può fare riferimento a colonne da una singola tabella.
Non può fare riferimento a misure.
Non può usare una funzione nidificata CALCULATE .
Non può usare funzioni che analizzano o restituiscono una tabella a meno che non vengano passate come argomenti alle funzioni di aggregazione.
Può contenere una funzione di aggregazione che restituisce un valore scalare. Per esempio:
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Espressione filtro tabella
Un filtro di espressione di tabella applica un oggetto tabella come filtro. Potrebbe trattarsi di un riferimento a una tabella del modello, ma più probabilmente si tratta di una funzione che restituisce un oggetto tabella. È possibile usare la FILTER funzione per applicare condizioni di filtro complesse, incluse quelle che non è possibile definire da un'espressione di filtro booleana.
Funzioni di modifica filtro
Le funzioni di modificatore di filtro consentono di eseguire più operazioni rispetto all'aggiunta di filtri. Offrono un controllo aggiuntivo durante la modifica del contesto di filtro.
| Funzione | Scopo |
|---|---|
| REMOVEFILTERS | Rimuovere tutti i filtri o i filtri da una o più colonne di una tabella o da tutte le colonne di una singola tabella. |
| ALL 1, ALLEXCEPT, ALLNOBLANKROW | Rimuovere i filtri da una o più colonne o da tutte le colonne di una singola tabella. |
| KEEPFILTERS | Aggiungere un filtro senza rimuovere i filtri esistenti nelle stesse colonne. |
| USERELATIONSHIP | Interagire con una relazione inattiva tra le colonne correlate, nel qual caso la relazione attiva diventa automaticamente inattiva. |
| CROSSFILTER | Modificare la direzione del filtro (da singola a singola o da singola a entrambe) o disabilitare una relazione. |
1 La funzione ALL e le relative varianti si comportano sia come modificatori di filtro che come funzioni che restituiscono oggetti tabella. Se lo strumento supporta la REMOVEFILTERS funzione, usarlo per rimuovere i filtri.
Valore restituito
Valore risultante dall'espressione.
Osservazioni
Quando si forniscono espressioni di filtro, la CALCULATE funzione modifica il contesto di filtro per valutare l'espressione. Per ogni espressione di filtro, esistono due risultati standard quando l'espressione di filtro non viene sottoposta a wrapping nella KEEPFILTERS funzione:
- Se le colonne o le tabelle non si trovano nel contesto di filtro, i nuovi filtri vengono aggiunti al contesto di filtro per valutare l'espressione.
- Se le colonne o le tabelle sono già presenti nel contesto di filtro, i filtri esistenti vengono sovrascritti dai nuovi filtri per valutare l'espressione CALCULATE .
L'uso della CALCULATE funzione senza filtri consente di ottenere un requisito specifico. Esegue la transizione del contesto di riga al contesto di filtro. Questa transizione è necessaria quando un'espressione (non una misura del modello) che riepiloga i dati del modello deve essere valutata nel contesto di riga. Questo scenario può verificarsi in una formula di colonna calcolata o quando viene valutata un'espressione in una funzione iteratore. Quando si usa una misura del modello nel contesto di riga, la transizione del contesto è automatica.
-
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.
Esempi
Gli esempi in questo articolo possono essere usati con il modello adventure works DW 2020 di Power BI Desktop di esempio. Per ottenere il modello, vedere DAX modello di esempio.
La definizione di misura della tabella Sales seguente
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Categoria | Importo vendite | Blue Revenue |
|---|---|---|
| Accessoristica | $ 1.272.057,89 | $ 165,406,62 |
| Biciclette | $ 94.620.526.21 | $8.374.313.88 |
| Abbigliamento | $2.117.613.45 | $ 259,488,37 |
| Componenti | $ 11.799.076.66 | $ 803.642,10 |
| totale | $109.809.274.20 | $9.602.850.97 |
La funzione
La definizione di misura della tabella sales seguente
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Canale | Importo vendite | Revenue % Total Channel |
|---|---|---|
| Internet | $ 29,358,677,22 | 26.74% |
| Rivenditore | $ 80,450,596,98 | 73.26% |
| totale | $109.809.274.20 | 100.00% |
La funzione
L'tabella calcolata customer seguente classifica i clienti in una classe fedeltà. È uno scenario molto semplice: quando i ricavi prodotti dal cliente sono inferiori a $ 2500, vengono classificati come Bassa; in caso contrario, sono high.
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Segmento clienti | Conteggio clienti | Importo vendite |
|---|---|---|
| Alto | 4,637 | $102.670.663.09 |
| Low | 13,848 | $ 7.138.611,11 |
| totale | 18,485 | $109.809.274.20 |
In questo esempio il contesto di riga viene convertito nel contesto di filtro. È noto come transizione del contesto . La funzione
Contenuto correlato
- contesto filtro
- Contesto riga
- CALCULATETABLE Funzione
- Funzioni di filtro