Condividi tramite


CALCULATE

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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 è essenzialmente uguale a una misura.

I filtri possono essere:

  • Espressioni di filtro booleane
  • Espressioni di filtro tabella
  • Funzioni di modifica del filtro

Quando sono presenti più filtri, possono essere valutati usando l'operatore logico AND (&&) , ovvero tutte le condizioni devono essere TRUEo dall'operatore logico OR (||) , vale a dire che entrambe le condizioni possono essere vere.

Espressioni di filtro booleane

Un filtro di espressione booleana è un'espressione che restituisce TRUE o FALSE. 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 o restituiscono una tabella a meno che non vengano passate come argomenti alle funzioni di aggregazione.
  • Possono 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 funzione FILTER per applicare condizioni di filtro complesse, incluse quelle che non possono essere definite 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. Forniscono 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 diventerà 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 la funzione REMOVEFILTERS è supportata dallo strumento, è preferibile usarla per rimuovere i filtri.

Valore restituito

Valore che rappresenta il risultato dell'espressione.

Osservazioni

  • Quando vengono fornite espressioni di filtro, la funzione CALCULATE modifica il contesto di filtro per valutare l'espressione. Per ogni espressione di filtro, esistono due possibili risultati standard quando l'espressione di filtro non viene sottoposta a wrapping nella funzione KEEPFILTERS:

    • Se le colonne (o le tabelle) non sono nel contesto del filtro, i nuovi filtri verranno 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 verranno sovrascritti dai nuovi filtri per valutare l'espressione CALCULATE.
  • La funzione CALCULATE usata senza filtri ottiene un requisito specifico. Esegue la transizione del contesto di riga al contesto di filtro. È necessario 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. Si noti che quando una misura del modello viene usata 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

La definizione di misura della tabella Sales seguente produce un risultato dei ricavi, ma solo per i prodotti con colore blu.

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.

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 valuta la somma della tabella sales colonna Sales Amount in un contesto di filtro modificato. Alla tabella Product viene aggiunto un nuovo filtro colonna Color oppure il filtro sovrascrive qualsiasi filtro già applicato alla colonna.

La definizione di misura della tabella sales seguente produce un rapporto tra vendite e vendite per tutti i 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 divide un'espressione che somma la tabella sales valore di colonna Sales Amount (nel contesto di filtro) per la stessa espressione in un contesto di filtro modificato. Si tratta della funzione CALCULATE che modifica il contesto di filtro usando la funzione REMOVEFILTERS, che è una funzione modificatore di filtro. Rimuove i filtri dalla tabella Sales Order colonna Channel.

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 filtro. È noto come transizione del contesto . La funzione rimuove i filtri da tutte le colonne della tabella Customer , ad eccezione della colonna CustomerKey .

funzione del contesto di rigafunzioni filtro