CALCULATE
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
Valuta un'espressione in un contesto di filter modificato.
Nota
C'è anche la funzione CALCULATETABLE. Esegue esattamente la stessa funzionalità, except modifica il contesto filter applicato a un'espressione che restituisce un oggetto tabella .
Sintassi
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametri
Termine | Definizione |
---|---|
expression |
Espressione da valutare. |
filter1, filter2,… |
(Facoltativo) Le espressioni booleane or espressioni di tabella che definiscono filters, orfilter funzioni di modifica. |
L'espressione usata come parametro first è essenzialmente uguale a un measure.
Filters può essere:
- Espressioni filter booleane
- Espressioni di filter tabella
- Filter funzioni di modifica
Quando sono presenti più filters, possono essere valutati usando l'operatore logico AND (&&
) operatore logico, ovvero le condizioni di all devono essere TRUE
, or dall'operatore logico OR (||
), ovvero entrambe le condizioni possono essere true.
Espressioni filter booleane
Un'espressione booleana filter è un'espressione che restituisce TRUE
orFALSE
. Esistono diverse regole che devono rispettare:
- Possono fare riferimento a colonne da una singola tabella.
- Non possono fare riferimento a misure.
- Non possono usare una funzione di CALCULATE annidata.
A partire dalla versione di settembre 2021 di Power BI Desktop, si applicano anche le operazioni seguenti:
- Non possono usare funzioni che analizzano or restituiscono una tabella a meno che non vengano passate come argomenti alle funzioni di aggregazione.
- È possibile contenere una funzione di aggregazione che restituisce un valuescalare. Per esempio
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Espressione filter tabella
Un'espressione di tabella filter applica un oggetto tabella come filter. Potrebbe trattarsi di un riferimento a una tabella del modello, ma più probabilmente si tratta di una funzione che restituisce un oggetto tabella. È possibile utilizzare la funzione FILTER per applicare condizioni di filter complesse, incluse quelle che non possono essere definite da un'espressione filter booleana.
funzioni di modifica Filter
Filter funzioni di modifica consentono di eseguire più operazioni rispetto all'aggiunta di filters. Forniscono un controllo aggiuntivo quando si modifica filter contesto.
Funzione | Scopo |
---|---|
REMOVEFILTERS | Rimuovere allfilters, orfilters da una or più colonne di una tabella, or da all colonne di una singola tabella. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Rimuovere filters da una or più colonne, or dalle colonne all di una singola tabella. |
KEEPFILTERS | Aggiungere filter senza rimuovere le filters esistenti nelle stesse colonne. |
USERELATIONSHIP | Interagire con una relazione inattiva tra related colonne, nel qual caso la relazione attiva diventerà automaticamente inattiva. |
CROSSFILTER | Modificare la direzione di filter (da singola a singola or da singola a entrambe) or disabilitare una relazione. |
1 La funzione ALLand le relative varianti si comportano sia come modificatori filterand come funzioni che restituiscono oggetti tabella. If la funzione REMOVEFILTERS è supportata dallo strumento, è preferibile usarla per rimuovere filters.
Restituisce value
Il value che è il risultato dell'espressione.
Osservazioni
Quando vengono fornite espressioni filter, la funzione CALCULATE modifica il contesto filter in modo da evaluate'espressione. Per ogni espressione filter, esistono due possibili risultati standard quando l'espressione filter viene not sottoposta a wrapping nella funzione KEEPFILTERS:
- If le colonne ( tabelleor) non sono nel contesto di filter, quindi le nuove filters verranno aggiunte al contesto di filter per evaluate'espressione.
- If le colonne ( tabelleor) sono già presenti nel contesto di filter, il filters esistente verrà sovrascritto dal nuovo filters per evaluate'espressione CALCULATE.
La funzione CALCULATE usata senza filters ottiene un requisito specifico. Esegue la transizione del contesto di riga al contesto di filter. È necessario quando un'espressione (not un modello measure) che riepiloga i dati del modello deve essere valutata nel contesto di riga. Questo scenario può verificarsi in una formula di colonna calcolata or quando viene valutata un'espressione in una funzione iteratore. Si noti che quando un modello measure viene usato nel contesto di riga, la transizione del contesto è automatica.
Questa funzione è not supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate or regole di sicurezza a livello di riga.
Esempi
La tabella sales seguente measure definizione produce un risultato dei ricavi, ma solo per i prodotti con colore blu.
Gli esempi in questo articolo possono essere usati con il modello sample Adventure Works DW 2020 Power BI Desktop. Per ottenere il modello, vedere DAXsample modello.
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 tabella Sales seguente measure definizione produce un rapporto tra vendite e vendite per all canali di vendita.
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% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
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"
)
In questo esempio il contesto di riga viene convertito nel contesto di filter. È noto come transizione del contesto . La funzione