Gestire attività SQL ripetitive, come la pulizia dei dati, l'aggiornamento delle regole di business o l'esecuzione di logiche batch, può essere noioso e soggetto a errori se si copiano e incollano codice.
Ora, le Stored Procedure SQL in Databricks (ora generalmente disponibili) consentono di memorizzare quella logica una sola volta, eseguirla ogni volta che è necessario e mantenerla sotto il controllo di Unity Catalog.
Sia che si tratti di pulire i dati prima dell'analisi, aggiornare tabelle in base a criteri di business o spostare carichi di lavoro da un data warehouse aziendale legacy, le stored procedure rendono il processo più semplice, coerente e facile da mantenere.
Databricks supporta standard aperti e interoperabilità, evitando implementazioni proprietarie o specifiche del vendor. Le Stored Procedure SQL seguono lo standard ANSI/PSM SQL e verranno contribuite a Apache Spark™ open source.
Le procedure sono ampiamente utilizzate in attività amministrative, gestione dei dati e flussi di lavoro ETL, specialmente nei data warehouse aziendali (EDW). Per i clienti che passano dagli EDW a Databricks, le stored procedure esistenti possono essere migrate senza doverle riscrivere, rendendo la transizione più semplice. E come sempre, il miglior data warehouse è un lakehouse.
Per uno dei nostri casi d'uso critici relativi alla segmentazione dei clienti, abbiamo sfruttato le Stored Procedure SQL con DBSQL per ottenere migliori prestazioni, scalabilità ed efficienza dei costi. La familiarità con SQL ci ha aiutato a implementare e distribuire la soluzione in produzione in tempi molto brevi. L'utilizzo delle Stored Procedure ci ha permesso di gestire logiche complesse in modo più efficace, mantenendo l'architettura generale snella e manutenibile. —SambaSiva Rao, Sr. Data Engineer/Architect, ClicTechnologies
Le Stored Procedure SQL sono ora generalmente disponibili.
Nei flussi di lavoro di elaborazione dei dati, i clienti possono avere difficoltà a mantenere la coerenza e le prestazioni di attività ripetitive e logiche complesse. Le stored procedure sono un ottimo approccio in questi casi, garantendo che i dati vengano elaborati in modo coerente e standardizzato, e che le prestazioni siano ottimali.
Per le attività di pulizia dei dati, le procedure possono applicare trasformazioni come la conversione di formati di data incoerenti in una struttura standardizzata, la rimozione degli spazi bianchi iniziali e finali dai campi di testo e la sostituzione o correzione di valori errati. Ciò garantisce che i dati siano preparati per l'analisi downstream. Vedere l'esempio ETL dettagliato di seguito.
Sul lato della gestione dei dati, le stored procedure possono aggiornare in modo efficiente i valori delle tabelle in base a regole di business definite, come la segnalazione di record obsoleti, il ricalcolo di campi o la sincronizzazione dei dati tra tabelle correlate. Incapsulando queste operazioni in procedure, i team possono garantire un'esecuzione coerente, ridurre l'intervento manuale e migliorare la qualità dei dati su larga scala. Vedere l'esempio di gestione dei dati dettagliato di seguito, utilizzando le stored procedure per aggiornare un programma fedeltà/adesione.
Quindi, cosa sono le Procedure? Sono raccolte precompilate di istruzioni SQL che consentono a un utente di gestire la propria logica SQL in un'unica unità riutilizzabile. Le procedure sono memorizzate in Unity Catalog, il che significa che sono governate e incapsulano completamente i permessi. Quando una stored procedure viene chiamata, il database esegue queste operazioni predefinite, offrendo il vantaggio di una maggiore sicurezza, una manutenzione semplificata di carichi di lavoro complessi e il potenziale per prestazioni migliorate.
Ci sono 5 comandi principali che supportano le procedure: CREATE, CALL, DESCRIBE, SHOW e DROP.
Quando si crea una procedura, è possibile utilizzare diversi tipi di parametri per controllare l'input e l'output.
Questi parametri possono essere assegnati a:
La logica incapsulata all'interno di una Stored Procedure SQL è costruita su SQL Scripting. Una stored procedure può essere considerata come uno script riutilizzabile con parametri, governato da Unity Catalog. Puoi leggere di Scripting in questi due blog introduttivi:
Sono supportate chiamate di procedure nidificate e ricorsive, il che significa che i clienti possono organizzare le proprie unità di lavoro o logiche di business in modo conveniente in procedure separate, rendendo l'intero flusso di esecuzione SQL più modulare. Ciò migliora la leggibilità e la manutenibilità.
Le procedure sono raggruppate con le Funzioni in Unity Catalog nell'interfaccia utente. Tuttavia, procedure e funzioni, pur consentendo di riutilizzare la logica SQL, servono scopi diversi.
Una funzione viene utilizzata per restituire un valore o una tabella. Deve essere utilizzata all'interno di una query SQL e non può includere SQL dinamico o logica procedurale. Una procedura, al contrario, viene utilizzata per eseguire una sequenza di istruzioni SQL. Può includere flussi di controllo, variabili, cicli e SQL dinamico utilizzando IDENTIFIER ed EXECUTE IMMEDIATE. Si chiama una procedura come comando autonomo, tipicamente per eseguire un'attività o un flusso di lavoro.
Ora che abbiamo trattato le capacità delle Stored Procedure SQL, esploriamo alcuni esempi per dimostrare il loro valore e i problemi che aiutano a risolvere.
Puoi usare questo notebook per seguire, contiene tutti gli esempi di questo post, oltre ai comandi di preparazione dei dati.
Se segui la tipica architettura medallion, sai che spostare i dati da Bronze a Silver (o da Silver a Gold) può richiedere la pulizia, la trasformazione, l'aggregazione e la formattazione dei dati. Le Stored Procedure sono ottime per gestire processi ripetitivi come questi all'interno di un flusso di lavoro ETL.
In questo scenario ETL, una Procedura viene utilizzata per:
Procedure come questa aiutano a standardizzare i prodotti di dati. Qualsiasi utente di questa procedura produrrà dati nella stessa struttura, indipendentemente dall'intervallo di date o dal punto vendita. Questo è un vantaggio primario del riutilizzo del codice. Il riutilizzo del codice sarà naturalmente meno soggetto a errori poiché la stessa logica viene eseguita ogni volta.
La gestione dei dati è la pratica di garantire che i tuoi dati siano accurati, coerenti e accessibili in modo efficiente, qualità essenziali per qualsiasi organizzazione che miri a prendere decisioni basate sui dati. Senza una solida gestione dei dati, anche gli sforzi di analisi o reporting più avanzati possono essere compromessi da informazioni inaffidabili o incoerenti.
Esaminiamo un esempio comune nell'industria commerciale in cui un'azienda stabilisce un programma fedeltà per fornire ai clienti vantaggi basati sul loro livello. Le compagnie aeree hanno programmi frequent flyer e la maggior parte delle catene di negozi al dettaglio ha programmi di ricompense, ecc. Man mano che i clienti volano di più con la stessa compagnia aerea o acquistano più articoli dalla stessa catena, i clienti guadagnano più vantaggi.
Ecco un esempio di come le Stored Procedure possono essere utilizzate per gestire e aggiornare un programma fedeltà standard per la vendita al dettaglio. Ci sono due procedure utilizzate per gestire i livelli fedeltà dei clienti: una per aggiornare il livello fedeltà di un cliente specifico per il customerID fornito e l'altra che aggiorna il livello fedeltà dei clienti per tutti i clienti di un paese fornito.
Ora utilizziamo la procedura creata per aggiornare i livelli fedeltà dei clienti per i clienti della Serbia, Germania e Canada, e poi controlliamo i record aggiornati:
La query precedente produce il seguente risultato:
Incapsulando la logica di aggiornamento del livello nei rispettivi procedure, evitiamo la duplicazione del codice e rimuoviamo la complessità dal chiamante, che deve solo invocare la procedura con i parametri appropriati.
Con le Stored Procedure SQL ora in DBSQL, i clienti possono continuare a migrare i carichi di lavoro dei data warehouse aziendali legacy nel lakehouse. Sulla base del feedback dei clienti, ci sono diverse funzionalità chiave che vogliamo affrontare mentre ci muoviamo verso la GA:
I clienti che desiderano condividere feedback o richieste relative a SQL Scripting e Procedure possono farlo tramite questo modulo.
Altri due importanti costrutti SQL sono necessari per migrare le Stored Procedure dai sistemi legacy: le Tabelle Temporanee e le Transazioni. Le Tabelle Temporanee sono ora generalmente disponibili su DBSQL, mentre il supporto per le Transazioni (multi-statement e multi-tabella) sarà presto disponibile.
Sia che tu sia un utente Databricks esistente o che tu stia migrando da un altro Data Warehouse, le Stored Procedure SQL sono una funzionalità che dovresti usare per semplificare la gestione di flussi di lavoro SQL complessi. Inizia con le Stored Procedure SQL leggendo la documentazione di Databricks documentazione.
Per saperne di più su Databricks SQL, visita il nostro sito web o leggi la documentazione. Puoi anche dare un'occhiata al tour del prodotto per Databricks SQL. Se vuoi migrare il tuo data warehouse esistente a un data warehouse serverless ad alte prestazioni con un'ottima esperienza utente e un costo totale inferiore, allora Databricks SQL è la soluzione — provalo gratuitamente.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
