Usare le 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 poco usate dagli sviluppatori che sono agli inizi con Power BI Desktop, ma sono efficaci ed è consigliabile usarle a priori quando si creano misure.

Per alcune espressioni vengono usate molte funzioni annidate e la logica delle espressioni viene riutilizzata. Queste espressioni hanno un tempo di elaborazione più lungo ed essendo difficili da leggere, è anche difficile risolverne i problemi. Usando le variabili, è possibile risparmiare tempo per l'elaborazione della query. Questa modifica è un passaggio nella direzione giusta verso l'ottimizzazione delle prestazioni di un modello semantico.

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

  • Miglioramento delle prestazioni: le variabili possono rendere più efficienti le misure perché Power BI non deve più valutare la stessa espressione più volte. È possibile ottenere gli stessi risultati in una query in circa la metà del tempo di elaborazione originale.

  • Miglioramento della leggibilità: le variabili hanno nomi brevi e autodescrittivi e vengono usate al posto di un'espressione ambigua contenente più parole. Usando le variabili, può risultare più facile leggere e comprendere le formule.

  • Semplificazione del debug: è possibile usare le variabili per il debug di una formula e il test delle espressioni, che possono essere utili durante la risoluzione dei problemi.

  • Riduzione della complessità: le variabili non richiedono l'uso di funzioni DAX EARLIER o EARLIEST, che sono difficili da comprendere. Queste funzioni erano necessarie prima dell'introduzione delle variabili e venivano scritte in espressioni complesse che introducevano nuovi contesti di filtro. Ora che è possibile usare le variabili invece di tali funzioni, è possibile scrivere meno formule complesse.

Usare le variabili per migliorare le prestazioni

Per illustrare come è possibile usare una variabile per rendere più efficiente una misura, la tabella seguente visualizza la definizione di una 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 introdurre una variabile denominata SalesPriorYear e usa un'espressione per assegnare il risultato "dello stesso periodo dell'anno scorso" alla nuova variabile. Usa quindi la variabile due volte nell'espressione DIVIDE.

Senza la variabile

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

Con la variabile

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

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

Se il modello semantico ha più query con più misure, l'uso delle variabili potrebbe ridurre il tempo di elaborazione di query complessivo in metà e migliorare le prestazioni complessive del modello semantico. Questa soluzione è anche semplice. Si immagini il risparmio di tempo quando le formule diventano più complesse, ad esempio quando si ha a che fare con percentuali e totali parziali.

Usare le variabili per migliorare la leggibilità

Oltre a migliorare le prestazioni, è possibile notare come l'uso delle variabili rende il codice più semplice da leggere.

È consigliabile assegnare nomi descrittivi alle variabili. Nell'esempio precedente il nome della variabile è SalesPriorYear, che indica chiaramente ciò che viene calcolato dalla variabile. Si supponga invece di usare una variabile denominata X, temp o variabile1. Lo scopo di tale variabile non sarebbe affatto chiaro.

Usando nomi chiari, concisi e significativi, sarà più facile capire che cosa si sta calcolando e sarà molto più semplice per gli altri sviluppatori continuare a usare il report in futuro.

Usare le variabili per risolvere i problemi di più passaggi

È possibile usare le variabili per eseguire il debug di una formula e identificare il problema. Le variabili consentono di semplificare l'attività di risoluzione dei problemi del calcolo DAX valutando separatamente ogni variabile e richiamandole dopo l'espressione RETURN.

Nell'esempio seguente viene testata un'espressione assegnata a una variabile. Per eseguire il debug, riscrivere temporaneamente l'espressione RETURN per scrivere nella variabile. La definizione della misura restituisce solo la variabile SalesPriorYear perché è ciò che segue l'espressione RETURN.

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

L'espressione RETURN visualizzerà solo il valore SalesPriorYear%. Questa tecnica consente di ripristinare l'espressione al termine del debug. Rende anche i calcoli più semplici da comprendere grazie alla minore complessità del codice DAX.