Excel DAX - Contesto di valutazione

In DAX, il contesto è un termine importante di cui tenere conto durante la scrittura di formule DAX. Indicato anche comeevaluation context, Il contesto DAX viene usato per determinare la valutazione di una formula DAX e il risultato corrispondente. Ciò significa che i risultati di una formula DAX possono variare in base al contesto. È necessario comprendere chiaramente come viene utilizzato un contesto DAX specifico e in che modo i risultati possono essere diversi.

Il contesto di valutazione consente di eseguire analisi dinamiche, in cui i risultati di una formula DAX possono cambiare per riflettere la riga corrente o una selezione di celle e anche i dati correlati. La comprensione del contesto e l'utilizzo efficace del contesto sono molto importanti per creare potenti formule DAX, eseguire analisi dinamiche dei dati e risolvere i problemi nelle formule DAX. I contesti di valutazione sono la base di tutte le funzionalità avanzate di DAX che è necessario padroneggiare per creare report di analisi dei dati complessi.

Mentre continui a fare riferimento alle funzioni DAX per l'utilizzo pertinente nelle formule DAX, devi fare riferimento a questo capitolo sul contesto DAX per ottenere chiarezza sui risultati.

Tipi di contesto in DAX

DAX supporta i seguenti contesti di valutazione:

  • Contesto di riga
  • Filtra contesto

Quando una formula DAX viene valutata, tutti i contesti verranno presi in considerazione e applicati come pertinenti. I contesti esistono insieme e il risultato della formula sarà diverso in base al contesto utilizzato durante il calcolo di un valore. Ad esempio, quando si selezionano i campi per righe, colonne e filtri in una tabella pivot, i subtotali vengono calcolati dinamicamente in base a quale riga e colonna è associato il subtotale / totale ei valori nelle righe e nelle colonne sono determinati dai filtri Usato.

Contesto di riga

Il contesto di riga indica che la formula DAX o la funzione DAX sa a quale riga della tabella fa riferimento in qualsiasi momento. Puoi considerare il contesto di riga come la riga corrente. La formula verrà calcolata riga per riga con il contesto della riga.

Alcune funzioni DAX (ad esempio, le funzioni X, FILTER ()) e tutte le colonne calcolate hanno un contesto di riga. Ad esempio, se crei una colonna calcolata Anno con la formula DAX = YEAR ([Data]), i valori della colonna calcolata vengono ottenuti applicando la formula DAX data alla colonna data nella tabella, riga per riga.

Ciò significa che se hai creato una colonna calcolata, il contesto di riga è costituito dai valori in ogni singola riga e dai valori nelle colonne correlate alla riga corrente, come determinato dalla formula DAX utilizzata. Sebbene la formula DAX non contenga il riferimento a una riga, DAX comprende implicitamente il contesto della riga durante il calcolo dei valori.

DAX crea automaticamente un contesto di riga quando si definisce una colonna calcolata e tutti i valori calcolati con la formula DAX utilizzata verranno visualizzati nella colonna calcolata.

Al contrario, quando si dispone di una funzione DAX come SUMX, i valori calcolati riga per riga vengono sommati e verrà visualizzato solo il risultato finale. Cioè, i valori intermedi vengono scartati.

Quando sono presenti tabelle correlate, il contesto della riga determina quali righe nella tabella correlata sono associate alla riga corrente. Tuttavia, il contesto di riga non si propaga automaticamente attraverso le relazioni. Devi usare le funzioni DAX - RELATED e RELATEDTABLE per questo.

Contesto a più righe

DAX ha funzioni iteratore come SUMX. È possibile utilizzare queste funzioni per nidificare i contesti di riga. Con questo, a livello di codice puoi avere una ricorsione su un ciclo interno e un ciclo esterno, dove puoi avere più righe correnti e contesti di riga correnti.

Ad esempio, è possibile utilizzare la funzione DAX Earlier () che archivia il contesto di riga dall'operazione che ha preceduto l'operazione corrente. Questa funzione memorizza due set di contesto in memoria: un set di contesto rappresenta la riga corrente per il ciclo interno della formula e un altro set di contesto rappresenta la riga corrente per il ciclo esterno della formula. DAX alimenta automaticamente i valori tra i due cicli in modo da poter creare aggregazioni complesse.

Per un esempio, fare riferimento allo scenario - Creazione di una formula DAX che classifica dinamicamente i valori nel capitolo Scenari - Classificazione e confronto dei valori.

Filtra contesto

Il contesto del filtro fa riferimento a qualsiasi filtro applicato al modello di dati in DAX. Il contesto del filtro viene creato da una tabella pivot e anche dalle funzioni DAX.

Filtro contesto creato da una tabella pivot

Il contesto del filtro creato da una tabella pivot è il filtro naturale applicato dalle selezioni effettuate sui campi della tabella pivot dai seguenti:

  • Rows
  • Columns
  • Filters
  • Slicers

Il contesto del filtro creato da una tabella pivot filtra le tabelle sottostanti nel modello di dati. Se le tabelle sono correlate, i filtri scorrono dalle tabelle di ricerca alle tabelle di dati. Ciò significa che puoi filtrare le tabelle di dati in base ai risultati delle tabelle di ricerca. La propagazione del filtro non avviene al contrario. Tuttavia, puoi usare le formule DAX per filtrare le tabelle di ricerca in base ai risultati delle tabelle di dati.

Filtra contesto creato dalle funzioni DAX

È possibile usare le funzioni di filtro DAX per definire campi calcolati e colonne calcolate, contenenti espressioni di filtro che controllano i valori usati dalla formula DAX. Questi campi calcolati e colonne calcolate diventano quindi parte dell'elenco dei campi della tabella pivot ed è possibile aggiungerli alla tabella pivot. Puoi anche cancellare selettivamente i filtri su colonne particolari con queste funzioni di filtro DAX. Un esempio di una potente funzione di filtro DAX per creare il contesto del filtro è CALCULATE (). Per un esempio, fare riferimento al capitolo Scenari - Esecuzione di calcoli complessi.

Filtra il contesto come aggiunta al contesto di riga

Il contesto di riga non crea automaticamente un contesto di filtro. Puoi ottenere lo stesso risultato con le formule DAX contenenti le funzioni di filtro DAX.