Il diavolo è nei dettagli diventa un campione di Power BI pensando fuori dagli schemi.

Il diavolo è nei dettagli, un campione di Power BI pensando fuori dagli schemi.

Power Bi è pieno di “eroi non cantati”! Uno di loro, il pannello di analisi, combinato con il cambiamento del tipo di visualizzazione, mi ha aiutato a migliorare significativamente le prestazioni del report di Power BI

Foto di Alice Dietrich su Unsplash

Alcune settimane fa, stavo lavorando sul miglioramento delle prestazioni del report di Power BI per uno dei miei clienti. La pagina del report era molto lenta nel renderizzare (oltre 15 secondi). Per fornirti un po’ di contesto: il report utilizza una connessione live a un modello tabulare ospitato in SSAS Tabular 2016.

Cosa accadrebbe se ti dicessi che sono riuscito a velocizzare le prestazioni della pagina del report di più del doppio, senza cambiare una singola riga di codice DAX dietro i calcoli?!

Continua a leggere e vedrai perché molto spesso il diavolo si nasconde nei dettagli e come pensare fuori dagli schemi può aiutarti a diventare un vero campione di Power BI 🙂

Immagine dell'autore

Lascia che ti spieghi velocemente l’illustrazione sopra. C’è un grafico a linee e colonne raggruppate, in cui le quattro linee rappresentano la scelta dell’utente dagli slicer a sinistra (soglia di report e tre livelli), mentre le colonne sono l’importo totale delle vendite. I dati sono suddivisi per anno e prodotto. Ciascuna delle linee è calcolata utilizzando DAX (a proposito, non è disponibile la funzione SELECTEDVALUE in SSAS 2016).

Ho attivato Performance Analyzer, ho preso la query DAX ed l’ho eseguita in DAX Studio:

Immagine dell'autore

Come puoi vedere, la query impiega 13,5 secondi per essere eseguita (con cache cancellata prima dell’esecuzione), mentre la maggior parte del tempo è stata spesa nel Formula Engine (76%). Questo è importante, perché confrontiamo questo risultato con una versione migliorata della pagina del report.

Quindi, cosa farebbe uno sviluppatore esperto di Power BI per ottimizzare questo scenario? Riscrivere DAX? SBAGLIATO!

Vediamo cosa possiamo fare senza cambiare la logica DAX!

Nel caso non lo sapessi, Power BI ti offre una funzionalità sottovalutata, o pensiamola come un “eroe non cantato”, che si chiama pannello di analisi.

Immagine dell'autore

La maggior parte di noi trascorre ovviamente la maggior parte del tempo nello sviluppo di Power BI nei due altri pannelli – dati e formato. Quindi, ti stupirai di quanti sviluppatori di Power BI non siano nemmeno consapevoli di questo terzo pannello, o anche quando lo siano, lo utilizzino molto raramente.

Senza addentrarci nei dettagli, questo pannello ti consente di aggiungere ingredienti analitici aggiuntivi alle tue visualizzazioni, come ad esempio linee Min, Max, Average, Median, barre di errore, ecc. A seconda del tipo di visualizzazione, non tutte le opzioni sono disponibili! E, questo era importante nel mio caso d’uso.

Una volta aperto il pannello di analisi, erano disponibili solo le barre di errore:

Immagine dell'autore

Essenzialmente, l’idea qui è, dal momento che queste quattro righe non cambiano in base ai numeri nel grafico stesso (hanno un valore costante basato sulla selezione del filtro), sfruttare la funzione di linea costante del pannello Analytics. Dal momento che non è disponibile una linea costante con il grafico a linee e colonne raggruppate, duplichiamo il nostro grafico e cambiamo il suo tipo in un normale grafico a colonne raggruppate.

Immagine dell'autore

Come puoi vedere, i “numeri” sono qui, ma ci mancano le nostre linee. Passiamo al pannello Analytics e creiamo 4 linee costanti, ognuna basata sulla misura DAX prodotta dalla selezione del filtro:

Immagine dell'autore

Il primo passo è aggiungere una linea costante. Successivamente, espandi la proprietà Linea e come valore, scegli il pulsante “fX”, che ti consente di impostare il valore della linea costante in base all’espressione (nel nostro caso, l’espressione generata dalla misura DAX). Ripeti il processo per tutte e quattro le linee.

Ti ricordo ancora una volta, stai attento che non ho toccato affatto il codice DAX!

Una volta che ho disattivato l’asse Y, ecco come appare il mio “gemello” visuale:

Immagine dell'autore

Praticamente lo stesso, giusto?

Ora, verifichiamo le prestazioni di questo visual:

Immagine dell'autore

È più di 5 secondi più veloce rispetto a quello originale! Se confronti attentamente lo screenshot precedente di DAX Studio, noterai che il numero di query del motore di archiviazione è esattamente lo stesso del caso precedente (e il tempo del motore di archiviazione è praticamente lo stesso), il che significa che il motore di archiviazione ha esattamente la stessa quantità di lavoro da fare per recuperare i dati.

La differenza chiave è nei tempi del motore di formule – a differenza del visual originale, dove il 75% del tempo totale delle query è stato speso nel motore di formule, questa volta è ridotto al di sotto del 60%!

Ero curioso di capire perché succede questo e qual è la differenza principale tra i due piani di query generati dal motore di formule.

Query più lenta - parte del codice DAX
Query più veloce - parte del codice DAX

L’unica differenza tra i due piani di query è che nella versione più lenta sono state create due tabelle virtuali: una per calcolare il valore della “colonna” nel visual (_ScopedCoreI0), e un’altra per calcolare il valore delle linee nello stesso visual (_ScopedCoreDM0). Infine, queste due tabelle sono state unite utilizzando la funzione NATURALLEFTOUTERJOIN.

Nella versione più veloce, non esiste una seconda tabella che calcola il valore delle linee. Inoltre, le misure che calcolano il valore delle linee sono state racchiuse nella funzione IGNORE, che contrassegna la/e misura/e all’interno dell’espressione SUMMARIZECOLUMNS da omettere dalla valutazione delle righe non vuote.

Conclusione

Come hai potuto vedere, cambiando il tipo di visual, combinato con l’uso del “eroe misconosciuto”, il pannello Analytics, si è ottenuto un significativo miglioramento delle prestazioni in questo scenario. Non è per caso che si dica che “il diavolo sta nei dettagli” – pertanto, spesso pensare fuori dagli schemi porterà a soluzioni creative.

Grazie per aver letto!