Uso delle variabili per migliorare le prestazioni e la risoluzione dei problemi

Completato

È possibile usare le variabili nelle formule DAX per scrivere calcoli meno complessi e più efficienti. Le variabili sono sotto poco usate dagli sviluppatori che hanno meno esperienza con Power BI Desktop ma sono efficaci ed è opportuno usarle ogni volta possibile.

Alcune espressioni comportano l'uso di molte funzioni nidificate e il riutilizzo della logica dell'espressione. Queste espressioni richiedono più tempo per l'elaborazione e sono difficili da leggere e, di conseguenza, è complessa la risoluzione dei relativi problemi. L'uso delle variabili consente di ridurre il tempo di elaborazione delle query. Questo cambiamento rappresenta un passo nella giusta direzione verso l'ottimizzazione delle prestazioni di un modello semantico.

L'uso di variabili nel modello semantico offre i vantaggi seguenti:

  • Prestazioni migliorate: le variabili possono rendere più efficienti le misure perché eliminano la necessità che Power BI valuti più volte la stessa espressione. È possibile ottenere gli stessi risultati in una query in circa la metà del tempo di elaborazione originale.
  • Migliore leggibilità : le variabili hanno nomi brevi e autodescrittivi e vengono usate al posto di un'espressione ambigua formata da più parole. Potrebbe risultare più facile leggere e comprendere le formule quando si usano le variabili.
  • Debug semplificato : le variabili possono essere usate per eseguire il debug di una formula e testare le espressioni, operazioni utili durante la risoluzione dei problemi.
  • Complessità ridotta: le variabili non richiedono l'uso di funzioni EARLIER o EARLIEST, difficili da comprendere. Queste funzioni erano necessarie prima dell'introduzione delle variabili ed erano scritte in espressioni complesse che introducevano nuovi contesti di filtro. Ora che è possibile usare le variabili invece di queste funzioni, è possibile scrivere formule meno complesse.

Uso delle variabili per migliorare le prestazioni

Per illustrare come è possibile usare una variabile per rendere più efficiente una misura, la tabella seguente mostra una definizione di misura in due modi diversi. Si noti che la formula ripete l'espressione che calcola lo "stesso periodo dell'anno scorso", ma in due modi diversi: la prima istanza usa il normale metodo di calcolo DAX e la seconda usa le variabili nel calcolo.

La seconda riga della tabella mostra la definizione della misura migliorata. Questa definizione usa la parola chiave VAR per rintrodurre una variabile denominata SalesPriorYear e usa un'espressione per assegnare il risultato dello "stesso periodo dell'anno scorso" a tale nuova variabile. Quindi usa la variabile due volte nella funzione DIVIDE.

Senza variabile

Sales YoY Growth =
DIVIDE(
    ([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
    CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)

Con variabile

Sales YoY Growth =
VAR SalesPriorYear =
    CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesVariance =
    DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN
    SalesVariance

Nella prima definizione di misura la formula è inefficiente perché richiede a Power BI di valutare due volte la stessa espressione. La seconda definizione è più efficiente perché, grazie alla variabile, Power BI deve valutare la funzione PARALLELPERIOD una sola volta.

Se il modello semantico include più query con più misure, l'uso di variabili può dimezzare il tempo complessivo di elaborazione delle query e migliorare le prestazioni complessive del modello semantico. Inoltre, questa soluzione è semplice. Si possono immaginare i risparmi man mano che le formule diventano più complicate, ad esempio quando si lavora con percentuali e totali parziali.

Uso delle variabili per migliorare la leggibilità

Oltre al miglioramento delle prestazioni, l'uso delle variabili rende il codice più semplice da leggere.

Quando si usano le variabili, è buona norma usare nomi descrittivi per le variabili. Nell'esempio precedente la variabile è denominata SalesPriorYear che indica chiaramente cosa sta calcolando. Immaginare il risultato se si usasse una variabile denominata X, temp o variable1: il sul scopo non sarebbe affatto chiaro.

L'uso di nomi chiari, concisi e significativi faciliterà la comprensione e la documentazione di ciò che si sta calcolando e agevolerà molto la futura manutenzione da parte di altri sviluppatori.

Uso delle variabili per la risoluzione dei problemi in più passaggi

È possibile usare le variabili per eseguire il debug di una formula e identificare il problema. Le variabili semplificano l'attività di risoluzione dei problemi del calcolo DAX poiché ogni variabile può essere valutata separatamente e richiamata nella clausola RETURN.

Nell'esempio seguente si testa un'espressione assegnata a una variabile. Per eseguire il debug, si riscrive temporaneamente la clausola RETURN per restituire la variabile. La definizione di misura restituisce solo la variabile SalesPriorYear perché è ciò che viene dopo l'espressione RETURN.

Sales YoY Growth % =
VAR SalesPriorYear =  CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)  
RETURN SalesPriorYear%

La clausola RETURN restituisce solo la variabile SalesPriorYear%. Questa tecnica consente di ripristinare l'espressione una volta completato il debug. Rende inoltre i calcoli più semplici da comprendere grazie alla ridotta complessità del codice DAX.