Una guida dal basso verso l'alto allo stack di serving BI di Databricks — dal layout fisico alle metriche governate alla materializzazione consapevole degli aggregati
I tuoi dashboard di BI sono lenti e ottimizzarli ti costa troppo tempo e denaro.
È uno schema familiare. Una query del dashboard richiede 30 secondi, quindi qualcuno crea una tabella aggregata per velocizzarla. Quella tabella necessita di una pipeline di aggiornamento. La pipeline necessita di monitoraggio. Quindi un secondo strumento di BI necessita degli stessi dati in una forma leggermente diversa, quindi qualcuno crea un'altra tabella aggregata utilizzando una pipeline separata. In breve tempo, ti ritrovi a gestire una proliferazione di aggregati, estrazioni e layer semantici specifici per lo strumento, ognuno con la propria finestra di obsolescenza, i propri gap di governance e la propria voce nella fattura di calcolo.
I carichi di lavoro di BI sono diversi dagli altri carichi di lavoro analitici. Sono altamente concorrenti, sensibili alla latenza e ripetitivi nei loro pattern di query. Questa combinazione richiede un approccio deliberato alla modellazione, archiviazione, ottimizzazione e servizio dei dati. La buona notizia: Databricks fornisce uno stack completo per il servizio di BI, dal layout fisico dei dati a un layer semantico governato, e ogni layer amplifica i guadagni di performance del layer sottostante.
Questo post illustra lo stack dal basso verso l'alto, con indicazioni pratiche su dove concentrarsi per i maggiori miglioramenti nelle performance delle query e nei costi.
Prima di approfondire ogni layer, ecco il quadro completo:

Unity Catalog fornisce governance in tutto il processo: lineage e controllo degli accessi dai dati grezzi attraverso la semantica fino al consumo. Ogni layer affronta un aspetto diverso di performance e costo. Analizziamoli.
Il layer fisico è dove la maggior parte delle performance di BI viene vinta o persa. Se lo fai bene, ogni query ne beneficia, prima ancora di aver toccato il layer semantico.
Gli schemi a stella rimangono il gold standard per le performance delle query di BI. Tabelle dimensionali ampie e denormalizzate unite a tabelle dei fatti tramite chiavi surrogate offrono all'ottimizzatore di query percorsi di join puliti e prevedibili.
Databricks supporta pienamente i costrutti di modellazione relazionale di cui hai bisogno: vincoli di chiave primaria e esterna (con RELY per hint all'ottimizzatore), colonne identity per chiavi surrogate e vincoli CHECK e NOT NULL. Se stai seguendo un'architettura medallion, mantieni i tuoi modelli normalizzati o Data Vault in Silver e crea schemi a stella denormalizzati in Gold per il consumo di BI.
Per schemi di implementazione dettagliati — gestione SCD Type-1 e Type-2, ETL di tabelle dei fatti con MERGE, dimensioni che arrivano in ritardo — consulta la serie di blog Implementing a Dimensional Data Warehouse in Databricks SQL.
Le tabelle gestite di Unity Catalog sono il fondamento per tutto il resto in questo stack. Unity Catalog gestisce tutte le responsabilità di lettura, scrittura, archiviazione e ottimizzazione per le tabelle gestite. Questo sblocca funzionalità automatiche che non ottieni con le tabelle esterne: Predictive Optimization (trattato di seguito) è abilitato per impostazione predefinita. Il clustering liquido automatico seleziona chiavi di clustering che si adattano al variare dei pattern di query. La cache dei metadati è sempre attiva, riducendo le richieste di archiviazione cloud e velocizzando la pianificazione delle query.
Usa tabelle gestite in tutta la piattaforma, non solo per il servizio di BI, ma attraverso i layer Bronze, Silver e Gold. Sono il tipo di tabella predefinito in Unity Catalog e i benefici di performance e governance si accumulano con ogni altra ottimizzazione in questo stack.
Liquid clustering sostituisce il partizionamento statico e il Z-ORDER manuale — e a differenza di questi approcci, puoi ridefinire le chiavi di clustering senza riscrivere i dati esistenti. Aggiungi CLUSTER BY (col1, col2) alla creazione della tabella o usa ALTER TABLE su tabelle esistenti. Se non sei sicuro di quali colonne scegliere, CLUSTER BY AUTO consente a Predictive Optimization di selezionare le chiavi in base ai pattern di query osservati.
Per i carichi di lavoro di BI, esegui il clustering sulle colonne di filtro e join più comuni: chiavi data, regione, categoria di prodotto. Puoi selezionare fino a quattro colonne e, se due colonne sono altamente correlate, includine solo una. Quando i dashboard filtrano sulle colonne di clustering, il clustering liquido migliora le performance delle query tramite lo skipping dei dati.
Predictive Optimization esegue automaticamente OPTIMIZE, VACUUM e la raccolta di statistiche sulle tabelle che trarrebbero beneficio da queste operazioni, quindi non è necessario pianificare questi job da soli. Raccoglie statistiche di skipping dei dati Delta e statistiche dell'ottimizzatore di query durante le scritture Photon, e riempie le statistiche per le tabelle esistenti. Nei carichi di lavoro osservati, questo ha fornito un miglioramento medio delle performance del 22%. Per i carichi di lavoro di BI con pattern di filtro ripetitivi, l'impatto è particolarmente significativo: statistiche migliori significano migliore skipping dei dati e piani di query più efficienti.
Abilita Predictive Optimization a livello di catalogo e lascialo funzionare. L'uso di Predictive Optimization è una delle ottimizzazioni a più alto rendimento e minor sforzo che puoi fare.
Il risultato: le query di BI scansionano meno dati, eseguono join in modo più efficiente e costano meno per l'esecuzione, e non hai ancora toccato il layer semantico.
Qui le cose si fanno interessanti. La maggior parte delle organizzazioni ha le stesse metriche di business definite in più posti: un calcolo dei ricavi in uno strumento di BI, uno leggermente diverso in un altro, una terza variante in una notebook SQL che qualcuno ha scritto il trimestre scorso. Ogni definizione diverge indipendentemente. Nessuno è sicuro di quale sia quella giusta.
Metric Views in Unity Catalog risolvono questo problema fornendo un layer BI headless: un layer semantico singolo e governato dove definisci il tuo modello dati e i KPI una volta, indipendentemente da qualsiasi strumento di BI specifico. Li definisci centralmente in SQL o nell'interfaccia utente point-and-click in Unity Catalog Explorer. AI/BI Dashboards, Genie, notebook SQL e strumenti di BI di terze parti risolvono le metriche dalle stesse definizioni. Definisci una metrica una volta e ogni consumatore, umano o AI, ottiene la stessa risposta.
Metric Views vanno oltre le definizioni centralizzate delle metriche: i metadati semantici sono ciò che le distingue. Campi come display_name, comment e synonyms forniscono ai sistemi AI il contesto necessario per interpretare correttamente le domande di business. Quando un utente chiede a Genie "qual è stato il nostro fatturato la scorsa settimana?", quelle annotazioni sono il modo in cui Genie mappa il linguaggio naturale alla metrica e alle dimensioni corrette. Nessun prompt personalizzato, nessun glossario separato. Lo stesso vale per gli agenti AI basati su Databricks: qualsiasi agente con accesso a Unity Catalog può scoprire e interrogare metriche governate attraverso il layer semantico invece di SQL codificato. Più ricchi sono i tuoi metadati, più accuratamente l'AI fornisce la risposta giusta.
Ecco un esempio che utilizza una tabella di sistema, poiché ogni cliente Databricks ha accesso, ma lo stesso schema si applica ai KPI di business come ricavi, volume ordini o fidelizzazione clienti. Questa Metric View calcola le metriche del warehouse DBSQL:
I consumatori interrogano la Metric View utilizzando MEASURE() per fare riferimento alle definizioni delle metriche governate:
Le metriche sono definite una volta nella Metric View. Ogni dashboard, spazio Genie o notebook che interroga metv_dbsql_metrics ottiene lo stesso risultato. Di seguito è riportato un dashboard che utilizza la vista metrica come sorgente.

Ecco Genie che utilizza la stessa vista delle metriche.

Per i team con definizioni di metriche sparse in più strumenti di BI, le Viste Metriche (Metric Views) offrono un modo per consolidare il livello semantico in Databricks. Invece di mantenere logiche di metriche separate in ogni strumento, le definisci una volta in Unity Catalog e colleghi i tuoi strumenti di BI a quella origine governata.
L'implementazione principale è open-source in Apache Spark™ (SPARK-54119), con supporto OSS per Unity Catalog in arrivo — così stai costruendo su uno standard aperto senza vendor lock-in. Tale apertura è ancora più importante man mano che l'AI si assume più carico di lavoro di BI. Gli agenti che interrogano i tuoi dati necessitano di una definizione coerente e leggibile dalla macchina di cosa significa ogni metrica, e uno standard aperto consente a qualsiasi strumento o agente — non solo quelli specifici del fornitore — di ragionare sulle stesse metriche governate.
Tradizionalmente, quando le dashboard di BI erano troppo lente, la soluzione era costruire tabelle aggregate. Creavi viste materializzate o tabelle di pre-aggregazione personalizzate sopra il tuo schema a stella, impostavi pipeline di aggiornamento e reindirizzavi i tuoi strumenti di BI alle nuove tabelle. Funzionava, ma aggiungeva un intero livello di oggetti e pipeline da mantenere — e ogni volta che la logica di aggregazione cambiava, dovevi aggiornare le query dello strumento di BI per farle corrispondere.
La materializzazione delle Viste Metriche offre un'alternativa più semplice. Quando abiliti la materializzazione su una Vista Metrica, la piattaforma mantiene automaticamente i risultati pre-aggregati dietro le stesse definizioni di metriche che gli strumenti di BI già interrogano — nessuna tabella aggregata separata da costruire, nessuna query dello strumento di BI da rifattorizzare. Ecco cosa succede sotto il cofano:
Le query delle dashboard che in precedenza scansionavano tabelle di fatti complete ora accedono a materializzazioni pre-aggregate — con latenza inferiore e costi di calcolo inferiori. Gli esempi di dashboard e Genie sopra hanno entrambi interrogato la stessa Vista Metrica, e a entrambi è stato instradato in modo trasparente il percorso di query a una materializzazione. Il piano di query seguente da Genie mostra questo in azione.

Query più veloci e costi inferiori non sono obiettivi in competizione — ogni ottimizzazione che riduce i dati scansionati riduce anche il calcolo per cui paghi. E ogni ottimizzazione nello stack si accumula. Il clustering liquido (Liquid clustering) e statistiche migliori migliorano lo skipping dei dati e i piani di query. Le materializzazioni possono essere aggiornate in modo incrementale, riducendo il calcolo che i warehouse SQL necessitano per servire le dashboard. Ecco alcuni altri modi per ridurre i costi:
system.billing.usage e system.query.history possono essere utilizzate per tracciare l'utilizzo della BI per dashboard, utente e warehouse. Costruisci Viste Metriche e una Dashboard AI/BI sulle tabelle di sistema per ottenere visibilità sull'utilizzo della tua BI.Non è necessario implementare l'intero stack contemporaneamente. Inizia da dove vedrai il maggior impatto:
OPTIMIZE, VACUUM e la raccolta di statisticheDatabricks fornisce ottimizzazioni ad ogni livello dello stack di serving BI. Le tabelle gestite, il clustering liquido e Predictive Optimization minimizzano i dati scansionati e il calcolo speso. Le Viste Metriche centralizzano la tua logica aziendale in un livello semantico governato che serve dashboard, Genie e agenti AI in modo coerente. La materializzazione offre prestazioni di query sub-secondo senza pipeline di pre-aggregazione manuali. Insieme, questi livelli si accumulano — riducendo sia la latenza delle query che il costo totale di proprietà.
Inizia definendo la tua prima Vista Metrica su una tabella di livello Gold esistente e abilitando la materializzazione. Consulta le risorse qui sotto per iniziare.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.