Introduzione
Guardare il video seguente per ottenere informazioni sulle funzioni iteratore.
Data Analysis Expressions (DAX) include un set di funzioni note come funzioni iteratore. Le funzioni iteratore enumerano tutte le righe di una tabella specificata e valutano un'espressione specificata per ogni riga. Permettono di avere flessibilità e controllo sul modo in cui i calcoli del modello riepilogano i dati.
A questo punto si ha familiarità con le funzioni di riepilogo a colonna singola, tra cui SUM
, COUNT
, MIN
, MAX
e altre. Ognuna di queste funzioni ha una funzione iteratore equivalente identificata dal suffisso "X", ad esempio SUMX
, COUNTX
, MINX
, MAXX
e altre. Sono inoltre disponibili funzioni iteratore specializzate che applicano filtri, eseguono classificazioni, calcoli semiadditivi nel tempo e altro ancora.
Caratteristica di tutte le funzioni iteratore è quella di dover passare una tabella e un'espressione. La tabella può essere un riferimento a una tabella del modello o un'espressione che restituisce un oggetto tabella. L'espressione deve restituire un valore scalare.
Le funzioni di riepilogo a colonna singola, come SUM
, sono funzioni a sintassi abbreviata. Internamente, Microsoft Power BI converte la funzione SUM
in SUMX
. Di conseguenza, le due definizioni di misura seguenti genereranno lo stesso risultato con le stesse prestazioni.
Revenue = SUM(Sales[Sales Amount])
Revenue =
SUMX(
Sales,
Sales[Sales Amount]
)
È importante comprendere il funzionamento del contesto con le funzioni iteratore. Poiché le funzioni iteratore eseguono l'enumerazione sulle righe di tabella, l'espressione viene valutata per ogni riga nel contesto di riga, in modo analogo alle formule di colonna calcolata. La tabella viene valutata nel contesto di filtro, pertanto se si usa l'esempio precedente di definizione della misura Revenue, se un oggetto visivo del report è stato filtrato in base all'anno fiscale FY2020, la tabella Sales conterrà le righe di vendita ordinate in tale anno. Il contesto di filtro viene descritto nel modulo del contesto di filtro.
Importante
Quando si usano le funzioni iteratore, è importante evitare di usare tabelle (di righe) di grandi dimensioni con espressioni che usano funzioni DAX estese. Alcune funzioni, come la funzione DAX SEARCH
, che esegue l'analisi di un valore di testo che cerca testo o caratteri specifici, possono avere prestazioni lente. La funzione DAX LOOKUPVALUE
può comportare anche un recupero dei valori lento, riga per riga. In questo secondo caso, usare la funzione DAX RELATED
, quando possibile.