Ottimizzazione di DAX per LuckyTemplates utilizzando DAX Studio – Formula Engines

Ottimizzazione di DAX per LuckyTemplates utilizzando DAX Studio – Formula Engines

Quando si ottimizza il modello di dati e il DAX per LuckyTemplates, è utile ricordare che dietro le quinte sono in esecuzione due motori: il motore delle formule e il motore di archiviazione .

Questi due motori lavorano insieme per restituire i risultati necessari all'utente. Forniscono i risultati impostati sotto forma di una tabella o di un valore di scala.

Sommario

Il ruolo del motore di formula

In questo articolo, ci concentreremo sul motore delle formule.

Il motore delle formule è il motore di primo livello che gestisce l'intera architettura di una query.

Qualunque cosa tu faccia durante l'esecuzione di una query o durante la creazione di una colonna calcolata o di una tabella calcolata, entra in gioco il motore delle formule.

Il motore delle formule comprende le query ricevute non solo in DAX, ma anche in MDX. Ad esempio, quando utilizzi Excel, crei modelli pivot basati su tabelle pivot e le tabelle pivot utilizzano effettivamente il linguaggio MDX.

È qui che entra in gioco il motore delle formule. Poiché comprende sia DAX che MDX, puoi usare un altro modello di LuckyTemplates. Le query inviate da questo modello di dati utilizzeranno DAX, mentre le query provenienti dal modello pivot utilizzeranno MDX.

Come funziona il motore di formula

La comprensione delle query originate dall'origine MDX o DAX è solo uno dei fattori delle prestazioni del motore delle formule. Esegue anche altri passaggi per aiutarti a lavorare sulle tue query.

Innanzitutto, deve generare un piano di query comprensibile per il motore di archiviazione . Come motore di livello inferiore, il motore di archiviazione non sa effettivamente se una tabella pivot all'interno di Excel o un oggetto visivo all'interno di LuckyTemplates ha eseguito la query.

Nella creazione di un piano di query, il motore delle formule crea prima un piano di query logico, quindi crea un piano di query fisico. Sia il piano di query logico che quello fisico dovrebbero essere simili.

Dopo aver completato il piano di query fisico, l'utente o lo strumento client ottiene il set di risultati. Da lì, lo strumento client determina come utilizzerà i risultati o il set di dati per visualizzare il risultato finale all'utente.

Principali limitazioni del motore di formula

Il motore delle formule svolge un ruolo fondamentale durante l'ottimizzazione di DAX per LuckyTemplates tramite DAX Studio. Tuttavia, presenta anche alcune limitazioni.

Innanzitutto, il motore delle formule utilizza sempre un singolo core per gestire l'intera operazione indipendentemente dal numero di core della CPU disponibili nel sistema .

Quando apro il mio Task Manager, vedrai che la mia CPU ha sei core.

Ottimizzazione di DAX per LuckyTemplates utilizzando DAX Studio – Formula Engines

Nonostante ciò, il motore di formula sceglierà comunque uno di quei sei core con cui lavorare, mentre lascia che il motore di archiviazione utilizzi il resto.

In secondo luogo, il motore delle formule non ha accesso diretto al tuo database . A causa di questa limitazione, dovresti archiviare i dati all'interno della memoria interna oppure puoi archiviarli nel database e creare un DirectQuery su quel database.

Si basa anche sul motore di archiviazione per ottenere i dati sotto forma di una cache di dati. Il motore delle formule quindi itera su quella cache di dati per procedere prima che possa fornire risultati all'utente finale.

In che modo il motore di formula aiuta a ottimizzare DAX per LuckyTemplates

A volte, quando si tenta di ottimizzare il modello di dati o DAX per LuckyTemplates, si noterà un rallentamento del motore di archiviazione durante l'esecuzione delle query. In questo caso, puoi utilizzare il motore delle formule per completare l'intero calcolo per ottimizzare il processo.

Si noti che se il motore delle formule finisce per costruire l'intera tabella da solo, il set di risultati creato nel processo non verrà utilizzato nelle query successive che verranno generate dallo strumento client se sono simili alle query eseguite in precedenza . Ma nel caso in cui il motore di archiviazione fornisca la cache dei dati, quella particolare cache dei dati può essere conservata nella memoria in modo che possa ottimizzare le richieste provenienti dallo strumento client.

Come funzionerà?

Supponiamo di scrivere una query che deve essere eseguita completamente dal motore di archiviazione, ma con alcuni aspetti che devono essere calcolati dal motore delle formule. In questo caso, il motore di archiviazione invierà una cache di dati al motore di formula e tale cache di dati (nel caso sia semplice) può essere conservata in memoria.

Ora, se una query simile arriva pochi secondi dopo, invece di eseguire nuovamente la scansione dell'intero modello di dati, il motore delle formule o il motore di archiviazione utilizzerà quella particolare cache di dati in modo da ridurre il tempo di query e migliorare l'esperienza dell'utente migliorato.

Riduzione del carico sul motore di formula

Ancora una volta, il motore delle formule comprende i codici DAX e MDX.

Quindi, se usi , e altre attività, il motore delle formule conosce tutte le funzioni che stai usando all'interno del linguaggio DAX e sarà in grado di risolverle tutte da solo. Tuttavia, ciò potrebbe influire sulle prestazioni della query soprattutto perché il motore delle formule tenta di eseguire tutte le operazioni utilizzando un singolo core.

Questo è il motivo per cui dobbiamo anche essere consapevoli di ridurre il carico sul motore di formula e aumentare il carico sul motore di archiviazione.

Un buon esempio di quanto sia diverso il calcolo all'interno del motore di formula rispetto al motore di archiviazione sarebbe l'uso di CROSSJOIN rispetto a .

Quando utilizzi CROSSJOIN, solo una quantità limitata di dati passerà attraverso il motore di archiviazione. Per quanto riguarda il resto del calcolo, sarà tutto eseguito dal motore di formule. In confronto, utilizzare SUMMARIZE significa eseguire l'intera query all'interno del motore di archiviazione.

Naturalmente, questo dipenderebbe anche da come viene utilizzato SUMMARIZE.

Se SUMMARIZE viene utilizzato come funzione più interna, verrà sicuramente spinto verso il basso nel motore di archiviazione. Ma in alcuni casi, SUMMARIZE viene utilizzato insieme a un codice diverso che richiede il funzionamento del motore delle formule. In questo caso, il motore delle formule interverrà e farà il lavoro.

Sapere dove va il carico può aiutarti a ottimizzare le prestazioni della tua query, specialmente quando tieni presente quali sono la capacità e le limitazioni per i motori a tua disposizione.

Strumenti che possono aiutare a ottimizzare DAX per LuckyTemplates

L'ottimizzazione di DAX sarà più semplice se si massimizzano gli strumenti che lo rendono possibile. DAX Studio è uno di questi strumenti.

Prendiamo l'esempio precedente in cui il motore delle formule assume l'intero carico del completamento del calcolo quando viene utilizzata la funzione SUMMARIZE. DAX Studio può aiutarti a riscrivere il codice in modo da inserire SUMMARIZE nel motore di archiviazione, liberando il carico sul motore delle formule. Ciò migliora potenzialmente le prestazioni del modello di dati e delle query.

Naturalmente, questo dovrebbe funzionare perfettamente per query semplici. Ci sono anche scenari più complicati.

Ad esempio, puoi creare modelli compositi che utilizzano due motori di archiviazione all'interno del modello di dati stesso. Uno potrebbe essere per Vertipaq, mentre l'altro per DirectQuery. In questo caso, il tuo database deve essere ottimizzato in modo che le query generate vengano costruite per quello specifico modello di dati relazionale.

Supponiamo che tu abbia due tabelle all'interno del tuo modello di data: la tabella Prodotti e la tabella Vendite. La tabella Products si trova nell'archivio Vertipaq, mentre la tabella Sales, essendo una tabella più grande, è archiviata direttamente all'interno del database tramite una connessione DirectQuery.

Supponiamo inoltre di trascinare la colonna Brand nella matrice, nonché la misura Total Sales proveniente dalla tabella Sales all'interno della connessione DirectQuery.

In questo caso, il motore della formula dovrà eseguire l'operazione tra i due motori.

Innanzitutto, recupererà le colonne Product Key e Brand dalla tabella Prodotti. Quindi, recupererà le colonne Prezzo netto, Quantità e Codice prodotto dalla tabella Vendite. Una volta che ha la cache dei dati sia da Vertipaq che da DirectQuery, il motore delle formule dovrà prendere la cache dei dati e provare a unirli per fornire i risultati all'utente finale.


Tecniche e lezioni di ottimizzazione delle query DAX
Prestazioni delle query e configurazione di DAX Studio
Ottimizzazione DAX: dove trovare la trappola DAX nascosta

Conclusione

Il motore delle formule gioca davvero un ruolo enorme quando lavori con DAX. Tuttavia, è fondamentale capire come funziona prima di iniziare. Padroneggiare come far funzionare perfettamente insieme il motore delle formule e il motore di archiviazione è fondamentale, soprattutto se si desidera che le query DAX funzionino meglio.

In quanto motore di primo livello all'interno dell'architettura dei servizi di analisi, il motore delle formule deve eseguire molte operazioni. Ma una volta compresi anche i dettagli del motore di archiviazione, puoi capire quale operazione inserire nel motore di archiviazione e quale lasciare all'interno del motore di formula.

Approfondiremo il motore di archiviazione in un'esercitazione separata.

Ti auguro il meglio,


Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere