Excel DAX - Esecuzione di calcoli complessi

Le formule DAX possono eseguire calcoli complessi che coinvolgono aggregazioni personalizzate, filtri e l'uso di valori condizionali. Puoi eseguire le seguenti operazioni con DAX:

  • Crea calcoli personalizzati per una tabella pivot.
  • Applicare un filtro a una formula DAX.
  • Rimuovi i filtri in modo selettivo per creare un rapporto dinamico.
  • Usa un valore da un ciclo esterno.

Creazione di calcoli personalizzati per una tabella pivot

Le funzioni DAX CALCULATE e CALCULATETABLE sono potenti e flessibili. Sono utili per definire i campi calcolati. Queste funzioni DAX consentono di modificare il contesto in cui verrà eseguito il calcolo. È inoltre possibile personalizzare il tipo di aggregazione o operazione matematica da eseguire.

Funzione CALCULATE

CALCULATE (<expression>, [<filter1>], [<filter2>]…)

La funzione CALCULATE valuta l'espressione data in un contesto modificato da zero o più filtri specificati.

Se i dati sono stati filtrati, la funzione CALCULATE modifica il contesto in cui i dati vengono filtrati e valuta l'espressione nel nuovo contesto specificato dai filtri. Ciò significa che tutti i filtri esistenti nella colonna specificata vengono rimossi e viene invece applicato il filtro utilizzato nell'argomento del filtro.

Esempio

Si supponga di voler visualizzare la percentuale di medaglie in termini di sport filtrata in base ai nomi dei paesi. Il calcolo dovrebbe ottenere il valore percentuale che sostituisce il filtro applicato al Paese nella tabella pivot.

  • Definisci un campo calcolato - Percentuale del conteggio medaglie come mostrato nello screenshot seguente.

Con questa formula DAX, tutte le righe nella tabella dei risultati vengono prese in considerazione nella funzione CALCULATE con il filtro contenente la funzione ALL. In questo modo, hai il conteggio totale nel denominatore.

La tabella pivot sarà come mostrato nello screenshot seguente.

Nello screenshot sopra, il Paese viene filtrato in USA e i primi 18 valori vengono visualizzati nella tabella pivot. Successivamente, puoi filtrare dinamicamente i valori nella tabella pivot. Tuttavia, i calcoli saranno corretti dalla formula DAX personalizzata che hai usato.

La funzione CALCULATETABLE accetta una tabella di valori ed esegue la stessa azione di quella della funzione CALCULATE.

Filtraggio dei dati nelle formule

È possibile creare filtri all'interno di formule DAX, per selezionare i valori dai dati di origine da utilizzare nei calcoli. Puoi farlo definendo un'espressione di filtro e usandola insieme alla tabella che è un input per la formula DAX.

L'espressione del filtro consente di ottenere un sottoinsieme dei dati di origine. Il filtro viene applicato dinamicamente ogni volta che aggiorni i risultati della formula DAX, a seconda del contesto corrente dei tuoi dati e puoi essere certo di risultati accurati e previsti.

L'espressione di filtro in genere contiene una funzione di filtro DAX che restituisce solo le righe selezionate della tabella, che possono quindi essere usate come argomento per un'altra funzione DAX che stai usando per l'aggregazione dei dati.

Esempio

Lo screenshot seguente mostra la definizione di un campo calcolato che fornisce il conteggio delle medaglie solo per gli sport estivi.

Con questo campo calcolato, la tabella pivot appare come mostrato nello screenshot seguente.

Come puoi osservare, i valori nella tabella pivot sul lato destro con il nuovo campo calcolato corrispondono a quelli che si trovano nella tabella pivot sul lato sinistro con il filtro sul campo Stagione applicato esplicitamente.

Note - Le funzioni di filtro e valore DAX restituiscono una tabella, ma non restituiscono mai la tabella o le righe direttamente al modello di dati e quindi sono sempre incorporate in un'altra funzione DAX.

Per i dettagli su queste funzioni DAX, fare riferimento al capitolo - Funzioni di filtro DAX.

Aggiunta e rimozione di filtri dinamicamente

Le formule DAX usate in una tabella pivot possono essere influenzate dal contesto della tabella pivot. Tuttavia, puoi modificare selettivamente il contesto aggiungendo o rimuovendo filtri. È possibile usare le funzioni DAX ALL e ALLEXCEPT per selezionare dinamicamente le righe indipendentemente dal contesto della tabella pivot.

Inoltre, puoi usare le funzioni DAX DISTINCT e VALUES per restituire valori distinti.

Utilizzo di un valore da un loop esterno

È possibile utilizzare un valore di un ciclo precedente nella creazione di un set di calcoli correlati con la funzione DAX EARLIER. Questa funzione DAX supporta fino a due livelli di loop nidificati.