Condividi tramite


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 TRUEorFALSE. 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 valuta il della tabella sales colonna Sales Amount in un contesto di modificato. Viene aggiunta una nuova filter alla tabella Productcolonna Color,or, il filter sovrascrive qualsiasi filter già applicato alla colonna.

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 divide un'espressione che somma la tabella sales colonna Sales Amount (nel contesto di ) per la stessa espressione in un contesto di modificato. Si tratta della funzione CALCULATE che modifica il contesto filter usando la funzione REMOVEFILTERS, ovvero una funzione modificatore filter. Rimuove dalla tabella 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 filter. È noto come transizione del contesto . La funzione rimuove dalle colonne della tabella Customer la colonna CustomerKey.

contesto funzione funzioni