Passa al contenuto principale
Prodotto

Risposte Approssimate, Decisioni Esatte: Nuove Funzioni Sketch per l'Analisi

Quattro nuove funzioni sketch in Databricks accelerano le query percentili, di conteggi distinti e top-K di ordini di grandezza

di Daniel Tenedorio, Kent Marten, Gengliang Wang e Chenhao Li

  • Percentili in millisecondi, non minuti: gli sketch di quantili KLL calcolano P50, P90, P99 su dataset massicci in memoria costante. Memorizza gli sketch e uniscili per aggiornamenti incrementali istantanei.
  • Sovrapposizione del pubblico a una frazione del costo: gli sketch Theta e Tuple eseguono unioni, intersezioni e differenze di insiemi su insiemi di valori distinti. Gli sketch Tuple associano anche metriche (somme, minimi, massimi) a ciascuna chiave per conteggi e aggregazioni combinate.
  • Tendenze in tempo reale senza rielaborazione: le funzioni approssimate top-K identificano gli elementi più frequenti in memoria limitata, unibili tra finestre temporali.
Nuove funzioni sketch per l'analisi
Set di dati su larga scala compressi in sketch compatti e unibili, che consentono query rapide sui percentili e aggregazioni senza analizzare dati grezzi.

Molte domande analitiche sono di supporto alle decisioni, non di controllo. Se sapere "~4,7 milioni di utenti unici ±1%" porta alla stessa decisione di "4.712.389 utenti unici", la risposta approssimativa a una frazione del costo è decisamente migliore.

Ogni data warehouse ha una manciata di query che consumano la maggior parte delle risorse di calcolo: percentili che impongono ordinamenti globali, conteggi distinti che tracciano ogni valore univoco, classifiche top-K che rimescolano interi set di dati. Databricks ora supporta quattro nuove famiglie di funzioni sketch, basate su Apache DataSketches, che sostituiscono questi calcoli esatti con approssimazioni a memoria limitata. Il compromesso: errore relativo configurabile dell'1-2%. Il vantaggio: ordini di grandezza in meno di calcolo, oltre a sketch che puoi archiviare, unire e ri-interrogare senza toccare i dati grezzi.

Calcoli dei percentili in millisecondi, non in minuti

Quando chiami PERCENTILE(response_time_ms, 0.99) su una tabella da un miliardo di righe, il motore deve ordinare ogni valore a livello globale. Un'elaborazione completa del cluster potrebbe richiedere minuti e consumare gigabyte di memoria. Per una dashboard che si aggiorna ogni 5 minuti, paghi quel costo più e più volte.

Gli sketch KLL sono riepiloghi compatti e unibili, creati per rispondere a domande sui quantili. Ti consentono di sostituire questo ordinamento utilizzando la stessa memoria limitata, sia che elabori mille valori o un trilione. L'errore relativo tipico è dell'1-2% ed è configurabile, ben all'interno dell'intervallo di azione per il monitoraggio della latenza, la pianificazione della capacità e il rilevamento delle anomalie.

Il vero vantaggio è il flusso di lavoro abilitato dagli sketch. Creali una volta durante il tuo ETL giornaliero. Archiviali come colonne nelle tabelle Delta. Quando una dashboard necessita di P50/P90/P99 per qualsiasi intervallo di tempo, unisci gli sketch precalcolati in millisecondi invece di scansionare nuovamente i dati grezzi. Estrai più quantili da un singolo sketch in un unico passaggio con kll_get_quantile_bigint(sketch, ARRAY(0.5, 0.9, 0.99)).

Analisi della sovrapposizione del pubblico senza il costo del calcolo

Quanti utenti hanno visto la tua pubblicità del Super Bowl ma non la tua campagna Instagram? L'analisi della sovrapposizione del pubblico è fondamentale per la misurazione del marketing. Devi conoscere la copertura totale (utenti che hanno visto qualsiasi campagna), la sovrapposizione (utenti che hanno visto più campagne) e la copertura esclusiva (utenti che hanno visto una sola campagna). Ma il calcolo esatto richiede la raccolta di ogni ID utente in memoria ed l'esecuzione di operazioni insiemistiche su potenzialmente miliardi di identificatori. Su larga scala, questo diventa impraticabile o impossibile.

Gli sketch Theta riassumono un insieme di valori distinti in memoria limitata e supportano l'algebra insiemistica completa: unioni, intersezioni e differenze. Crea uno sketch per campagna, quindi combinali matematicamente:

L'approccio esatto richiederebbe un'UNIONE per deduplicare, quindi un JOIN per trovare la sovrapposizione, potenzialmente rimescolando gli ID utente grezzi due volte sul tuo cluster. Con gli sketch Theta, generi oggetti binari compatti misurati in kilobyte, e le operazioni insiemistiche avvengono localmente in microsecondi. Questo rende pratiche le curve di copertura giornaliere, la misurazione dell'incrementalità e la deduplicazione cross-channel.

Classifiche in tempo reale senza rielaborare i dati grezzi

Cosa è di tendenza in questo momento? È una domanda semplice con una risposta esatta costosa: conta ogni valore distinto, archivia tutti quei conteggi, rimescolali sul tuo cluster, ordina globalmente. Per flussi di eventi ad alta cardinalità come log di ricerca o clickstream, questo è un processo batch, non una query live.

Gli sketch di Approximate top-K tracciano i tuoi elementi più frequenti in memoria limitata e ti consentono di unire partizioni e finestre temporali per estrarre i risultati istantaneamente. Gli elementi rari potrebbero essere scartati, il che va bene, perché non è quello che stai cercando.

Con approx_top_k_combine, la tua dashboard "di tendenza questa settimana" diventa un'unione di 168 sketch precalcolati piuttosto che una scansione di miliardi di eventi grezzi. Per i carichi di lavoro in streaming, unisci lo sketch di ogni micro-batch in un totale corrente e visualizza i risultati in tempo reale. Quello che una volta era un processo batch diventa una classifica live.

Cardinalità e attribuzione delle entrate in un unico passaggio

Contare i clienti distinti è una query. Sommare le loro entrate è un'altra. Fare entrambe le cose correttamente, senza contare due volte i clienti che appaiono in più periodi, è la sfida.

Considera una domanda analitica comune: "Quanti clienti unici hanno effettuato un acquisto questo mese e qual è stata la loro entrate totale per regione?" Tipicamente, inizieresti con un ampio GROUP BY, deduplicando gli ID cliente mentre sommi gli acquisti su miliardi di transazioni. E non puoi semplicemente aggiungere i risultati precedenti, i clienti che appaiono in entrambi i periodi vengono contati due volte e le loro entrate sovrastimate.

Gli sketch Tuple risolvono questo problema combinando il conteggio dei distinti e l'aggregazione delle metriche in un'unica struttura unibile.

Ogni sketch mappa un cliente distinto alla sua spesa aggregata. Quando unisci i dati tra giorni diversi, i conteggi dei clienti si deduplicano automaticamente e le somme delle entrate si accumulano. Il calcolo incrementale esatto ti richiederebbe di rielaborare i dati grezzi ogni volta che l'intervallo di dati cambia.

Iniziare con lo sketch giusto

Famiglia di funzioni

Casi d'uso

Sketch di quantili KLL

Percentili (P50, P90, P99)

Sketch Theta

Operazioni insiemistiche su valori distinti

Approximate Top-K

Elementi più frequenti

Sketch Tuple

Conteggi distinti e aggregazioni di metriche

Quando usare gli sketch: Dashboard, analisi di trend, monitoraggio, attribuzione marketing -- qualsiasi query per cui sono accettabili risposte approssimate. Più grande è il tuo dataset, meglio è. Se non sei sicuro di quale sketch usare, chiedi a Genie Code di aiutarti a scegliere quello giusto.

Quando rimanere esatti: Audit finanziari, reporting di conformità, o qualsiasi caso d'uso in cui i requisiti normativi o aziendali richiedono valori precisi.

Queste quattro famiglie di funzioni trasformano query di lunga durata nelle più economiche nel tuo data warehouse. Crea gli sketch una volta durante l'ETL, memorizzali in Delta, uniscili in lettura. I dati grezzi sono ancora lì quando arrivano gli auditor. Per tutto il resto, un margine di errore dell'1% e un'accelerazione di 1000 volte sono un compromesso benvenuto.

Tutte le funzioni funzionano in pipeline SQL, DataFrame e Structured Streaming. Gli sketch creati in Spark sono interoperabili con altri sistemi nell'ecosistema Apache DataSketches. Vedi la documentazione (1, 2, 3, 4) per le firme delle funzioni e gli esempi e inizia oggi stesso con gli sketch.

Menzione speciale a Christopher Boumalhab (cboumalh su GitHub) per aver implementato e contribuito con le famiglie di funzioni Theta sketch e Tuple sketch in Apache Spark.

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Ricevi gli ultimi articoli nella tua casella di posta

Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.