Schizzi

GoogleSQL per BigQuery supporta gli sketch di dati. Uno schizzo di dati è un breve riepilogo di un'aggregazione di dati. Acquisisce tutte le le informazioni necessarie per estrarre un risultato dell'aggregazione, l'aggregazione di dati o unirli a un altro schizzo per consentire la riaggregazione.

Il calcolo di una metrica mediante uno schizzo è molto meno costoso rispetto al calcolo un valore esatto. Se il calcolo è troppo lento o richiede troppo tempo archiviazione, usa gli schizzi per ridurre il tempo e le risorse delle query.

Inoltre, il calcolo di cardinalità, come numero di utenti distinti, o [quantiles][quantiles-wiki]{: .external}, come la durata mediana della visita, senza di solito è possibile eseguire schizzi solo eseguendo job sui dati non elaborati, dati già aggregati non possono più essere combinati.

Considera una tabella con i seguenti dati:

Prodotto Numero di utenti Durata mediana delle visite
Prodotto A 500 milioni 10 minuti
Prodotto B 20 milioni 2 minuti

Non è possibile calcolare il numero totale di utenti per entrambi i prodotti perché non sappiamo quanti utenti hanno utilizzato entrambi i prodotti nella tabella.

Una soluzione è archiviare gli schizzi nella tabella. Ogni schizzo è approssimata e compatta di una particolare proprietà di input, come cardinalità, che è possibile archiviare, unire (o riaggregare) ed eseguire query risultati quasi esatti. Nell'esempio precedente, puoi stimare il numero di utenti distinti per il Prodotto A e il Prodotto B mediante la creazione e l'unione (riaggregando) i disegni di ciascun prodotto. Puoi anche stimare il valore mediano della visita con schizzi dei quantili che puoi unire ed eseguire query allo stesso modo.

Poiché uno schizzo ha una compressione con perdita di dati dei dati originali, introduce una errore statistico rappresentato da un limite di errore o da un intervallo di confidenza (CI). Per la maggior parte delle applicazioni, questa incertezza è ridotta. Ad esempio, un tipico lo schizzo nel conteggio della cardinalità ha un errore relativo di circa l'1% nel 95% d'uso diversi. Uno schizzo scambia un po' di accuratezza, o precisione, a un prezzo più rapido e meno di costosi calcoli e meno spazio di archiviazione.

In sintesi, uno schizzo ha le seguenti proprietà principali:

  • Rappresenta un aggregato approssimativo per una metrica specifica
  • È compatto
  • È una forma serializzata di una struttura di dati sublineare in memoria
  • In genere è una dimensione fissa e asintoticamente più piccola dell'input
  • Può introdurre un errore statistico che determini con una precisione livello
  • Può essere unito ad altri schizzi per riassumere l'unione della base set di dati

Riaggregazione con unione degli schizzi

Gli schizzi ti consentono di archiviare e unire i dati per una riaggregazione efficiente. Ciò rende disegni particolarmente utili per le viste materializzate di set di dati. Puoi unire degli schizzi per costruire un riassunto di più flussi di dati sulla base di degli schizzi creati per ogni stream.

Ad esempio, se crei uno schizzo per il numero stimato di utenti distinti ogni giorno, puoi ottenere il numero di utenti distinti nel corso degli ultimi sette giorni unendo schizzi quotidiani. Riaggregare gli schizzi giornalieri uniti evitare di leggere l'input completo del set di dati.

La riaggregazione di uno schizzo è utile anche nell'elaborazione analitica online (OLAP). Tu puoi unire gli schizzi per creare un cubo OLAP, in cui riassume i dati lungo una o più dimensioni specifiche del cubo. OLAP le proprietà di aggregazione non sono possibili con conteggi distinti reali.

Integrazione schizzo

Puoi integrare gli schizzi con altri sistemi. Ad esempio, puoi creare disegni in applicazioni esterne, come Dataflow o Apache Spark e utilizzarli in GoogleSQL o viceversa e viceversa.

Oltre a GoogleSQL, puoi usare gli schizzi con i seguenti linguaggi di programmazione:

  • C++
  • Vai
  • Java
  • Python

Stima la cardinalità senza eliminazioni

Se hai bisogno di stimare la cardinalità e non hai bisogno è possibile eliminare elementi dallo schizzo, usa uno schizzo HLL++.

Ad esempio, per ottenere il numero di utenti unici che hanno utilizzato attivamente un prodotto in una un dato mese (metriche MAU o 28DAU), usa uno schizzo HLL++.

Schizzi HLL++

HyperLogLog++ (HLL++) è un algoritmo di disegno per stimare la cardinalità. HLL++ si basa sull'articolo HyperLogLog in Practice, in cui ++ indica le modifiche apportate all'algoritmo HyperLogLog.

La cardinalità è il numero di elementi distinti nella per uno schizzo. Ad esempio, puoi utilizzare uno schizzo HLL++ per ottenere il numero di utenti unici che hanno aperto un'applicazione.

HLL++ stima le cardinalità molto piccole e molto grandi. HLL++ include un parametro Funzione hash a 64 bit, rappresentazione sparsa per ridurre i requisiti di memoria per stime di cardinalità ridotte e la correzione empirica dei bias per stime di cardinalità ridotte.

Precisione

Gli schizzi HLL++ supportano la precisione personalizzata. La tabella seguente mostra le valori di precisione, la dimensione massima dello spazio di archiviazione e l'intervallo di confidenza livelli di precisione tipici:

Precisione Dimensione massima dello spazio di archiviazione CI 65% CI 95% CI 99%
10 1 KiB + 28 B ±3,25% ±6,50% ±9,75%
11 2 KiB + 28 B ±2,30% ±4,60% ±6,89%
12 4 KiB + 28 B ±1,63% ±3,25% ±4,88%
13 8 KiB + 28 B ±1,15% ±2,30% ±3,45%
14 16 KiB + 30 B ±0,81% ±1,63% ±2,44%
15 (valore predefinito) 32 KiB + 30 B ±0,57% ±1,15% ±1,72%
16 64 KiB + 30 B ±0,41% ±0,81% ±1,22%
17 128 KiB + 30 B ±0,29% ±0,57% ±0,86%
18 256 KiB + 30 B ±0,20% ±0,41% ±0,61%
19 512 KiB + 30 B ±0,14% ±0,29% ±0,43%
20 1024 KiB + 30 B ±0,10% ±0,20% ±0,30%
21 2048 KiB + 32 B ±0,07% ±0,14% ±0,22%
22 4096 KiB + 32 B ±0,05% ±0,10% ±0,15%
23 8192 KiB + 32 B ±0,04% ±0,07% ±0,11%
24 16384 KiB + 32 B ±0,03% ±0,05% ±0,08%

Puoi definire la precisione di uno schizzo HLL++ quando lo inizializza con il comando HLL_COUNT.INIT.

Eliminazione

Non puoi eliminare i valori da uno schizzo HLL++.

Ulteriori dettagli

Per un elenco delle funzioni che è possibile usare con gli schizzi HLL++, vedi Funzioni HLL++.

Funzioni di aggregazione approssimativa

In alternativa alle funzioni di approssimazione specifiche basate su schizzi, GoogleSQL fornisce dati aggregati approssimativi funzioni. Queste funzioni aggregate approssimative supportano gli schizzi per come conteggio distinto, quantili e conteggio superiore, ma per consentire una precisione personalizzata. Inoltre, non espongono né conservano lo schizzo per come altri tipi di schizzi. Le funzioni di aggregazione approssimate sono progettate per eseguire rapidamente query basate su schizzi senza configurazione.

Per un elenco di funzioni di aggregazione approssimate che puoi utilizzare con per un'approssimazione basata su schizzi, vedi Funzioni di aggregazione approssimate.