Introduzione a BI Engine

BigQuery BI Engine è un servizio di analisi in-memory rapido che accelera molte query SQL in BigQuery memorizzando in modo intelligente nella cache i dati che utilizzi più di frequente. Questa memorizzazione nella cache ti consente di migliorare il rendimento delle query senza ottimizzazione manuale o suddivisione dei dati in livelli. Puoi eseguire il clustering delle tabelle e il partizionamento delle tabelle per ottimizzare ulteriormente il rendimento di BI Engine per le tabelle di grandi dimensioni.

Ad esempio, se la dashboard mostra solo i dati dell'ultimo trimestre, puoi partizionare le tabelle in base al tempo in modo che solo le partizioni più recenti vengano caricate in memoria. Puoi quindi utilizzare le viste materializzate per unire e appiattire i dati, quindi contrassegnare la vista e la tabella di base risultanti come tabella preferita per assicurarti che l'accelerazione di BI Engine venga applicata solo ai dati di cui hai bisogno.

BI Engine offre i seguenti vantaggi:

  • Compatibilità con l'API BigQuery: BI Engine si integra direttamente con l'API BigQuery. Qualsiasi soluzione di BI o applicazione personalizzata che funziona con l'API BigQuery tramite meccanismi standard come l'API REST o i driver JDBC e ODBC può utilizzare BI Engine senza modifiche.
  • Runtime vettorializzato: l'utilizzo dell'elaborazione vettoriale in un motore di esecuzione consente di utilizzare in modo più efficiente l'architettura della CPU moderna operando su batch di dati alla volta. BI Engine utilizza anche codifiche avanzate dei dati, in particolare la codifica run-length del dizionario, per comprimere ulteriormente i dati archiviati nel livello in-memory.
  • Integrazione perfetta: BI Engine funziona con le funzionalità e i metadati di BigQuery, tra cui viste autorizzate, sicurezza a livello di colonna e mascheramento dei dati.
  • Allocazioni delle prenotazioni: le prenotazioni di BI Engine gestiscono separatamente l'allocazione della memoria per ogni progetto e regione. BI Engine memorizza nella cache solo le parti di colonne e partizioni sottoposte a query. Puoi specificare le tabelle che utilizzano l'accelerazione di BI Engine con le tabelle preferite.

Nella maggior parte delle organizzazioni, BI Engine viene abilitato da un amministratore della fatturazione che riserva la capacità per l'accelerazione di BI Engine con un' edizioneappropriata. Per saperne di più, consulta Riservare la capacità di BI Engine.

Architettura di BI Engine

BI Engine si integra con gli strumenti di BI, come Looker, Data Studio, Tableau e Power BI, nonché con le applicazioni personalizzate tramite l'API BigQuery per accelerare l'esplorazione e l'analisi dei dati:

Componenti dell'architettura di BI Engine.

Casi d'uso di BI Engine

BI Engine può accelerare in modo significativo molte query SQL, incluse quelle utilizzate per le dashboard di BI. L'accelerazione è più efficace se identifichi le tabelle essenziali per le query e le designi come tabelle preferite. Per utilizzare BI Engine, crea una prenotazione in una regione e specifica le dimensioni. Puoi lasciare che BigQuery determini le tabelle da memorizzare nella cache in base ai pattern di utilizzo del progetto oppure puoi specificare le tabelle per impedire che altro traffico interferisca con la loro accelerazione.

BI Engine è utile nei seguenti casi d'uso:

  • Utilizzi strumenti di BI per analizzare i dati: BI Engine accelera le query BigQuery, indipendentemente dal fatto che vengano eseguite nella console BigQuery, in uno strumento di BI come Data Studio o Tableau, in una libreria client, in un'API o in un connettore ODBC o JDBC. In questo modo, puoi migliorare in modo significativo il rendimento delle dashboard connesse a BigQuery tramite una connessione integrata (API) o connettori.
  • Hai tabelle sottoposte a query di frequente: BI Engine ti consente di designare le tabelle preferite da accelerare. Questa funzionalità è utile se hai un sottoinsieme di tabelle sottoposte a query più di frequente o utilizzate per dashboard ad alta visibilità.

BI Engine potrebbe non soddisfare le tue esigenze nei seguenti casi:

  • Utilizzi caratteri jolly nelle query: le query che fanno riferimento a tabelle con caratteri jolly non sono supportate da BI Engine e non usufruiscono dell' accelerazione.
  • Richiedi funzionalità di BigQuery non supportate da BI Engine: sebbene BI Engine supporti la maggior parte delle funzioni e degli operatori SQL, le funzionalità non supportate includono tabelle esterne, sicurezza a livello di riga e funzioni definite dall'utente non SQL.

Considerazioni su BI Engine

Quando decidi come configurare BI Engine, tieni presente quanto segue:

Garantire l'accelerazione per query specifiche

Per assicurarti che un insieme di query venga accelerato, crea un progetto separato con una prenotazione di BI Engine dedicata. Per prima cosa, stima la capacità di calcolo necessaria per le query, quindi designa queste tabelle come tabelle preferite per BI Engine.

Ridurre al minimo le unioni

BI Engine funziona meglio per i dati pre-uniti o pre-aggregati e per le query con un numero ridotto di unioni. Questo comportamento è particolarmente vero quando un lato dell'unione è grande e gli altri lati sono molto più piccoli, ad esempio quando esegui query su una tabella dei fatti di grandi dimensioni unita a tabelle delle dimensioni più piccole. Puoi combinare BI Engine con le viste materializzate, che eseguono le unioni per produrre una singola tabella grande e piatta. Questo approccio evita di eseguire le stesse unioni per ogni query. Per un rendimento ottimale delle query, ti consigliamo di utilizzare le viste materializzate non aggiornate.

Comprendere l'impatto di BI Engine

Per comprendere l'utilizzo di BI Engine, consulta Monitorare BI Engine con Cloud Monitoring, o esegui query sulle INFORMATION_SCHEMA.BI_CAPACITIES e INFORMATION_SCHEMA.BI_CAPACITY_CHANGES viste. Assicurati di disattivare l'opzione Utilizza risultati memorizzati nella cache in BigQuery per ottenere il confronto più accurato. Per saperne di più, consulta Utilizzare i risultati delle query memorizzati nella cache.

Tabelle preferite

Le tabelle preferite di BI Engine ti consentono di limitare l'accelerazione di BI Engine a un insieme specifico di tabelle. Le query su tutte le altre tabelle utilizzano gli slot BigQuery standard. Ad esempio, con le tabelle preferite puoi accelerare solo le tabelle e le dashboard che identifichi come importanti per la tua attività.

Se nel progetto non è disponibile memoria sufficiente per contenere tutte le tabelle preferite, BI Engine scarica le partizioni e le colonne a cui non è stato eseguito l'accesso di recente. Questa procedura libera la memoria per le nuove query che richiedono l'accelerazione.

Limitazioni delle tabelle preferite

Le tabelle preferite di BI Engine presentano le seguenti limitazioni:

  • Non puoi aggiungere viste logiche all'elenco delle prenotazioni delle tabelle preferite. Le tabelle preferite di BI Engine supportano solo le tabelle.
  • Le query sulle viste materializzate vengono accelerate solo se sia le viste materializzate sia le relative tabelle di base sono presenti nell'elenco delle tabelle preferite.
  • La specifica di partizioni o colonne per l'accelerazione non è supportata.
  • Le colonne di tipo JSON non sono supportate e non vengono accelerate da BI Engine.
  • Le query che accedono a più tabelle vengono accelerate solo se tutte le tabelle sono tabelle preferite. Ad esempio, tutte le tabelle in una query con un'istruzione JOIN devono essere presenti nell'elenco delle tabelle preferite per essere accelerate. Se anche una sola tabella non è presente nell'elenco delle tabelle preferite, la query non può utilizzare BI Engine.
  • I set di dati pubblici non sono supportati nella Google Cloud console. Per aggiungere una tabella pubblica come tabella preferita, utilizza l'API o DDL.

Ottimizzazione e accelerazione delle query

BigQuery, e di conseguenza BI Engine, divide un piano di query in più sottoquery. Una sottoquery è costituita da operazioni come la scansione, il filtro, il calcolo o l'aggregazione dei dati e funge da unità di esecuzione.

Sebbene tutte le query SQL BigQuery supportate vengano eseguite correttamente con BI Engine, quest'ultimo ottimizza in modo selettivo fasi specifiche:

  • Sottoquery a livello di foglia: BI Engine è ottimizzato principalmente per le sottoquery a livello di foglia che eseguono la scansione dei dati dallo spazio di archiviazione ed eseguono operazioni come filtro, calcolo, aggregazione, ordinamento (ORDER BY) e unioni supportate.
  • Esecuzione di fallback: le fasi o le sottoquery delle query che non possono essere accelerate da BI Engine vengono automaticamente eseguite negli slot BigQuery standard senza generare errori nella query.

Grazie a questa ottimizzazione selettiva, le query di business intelligence o di tipo dashboard più semplici traggono il massimo vantaggio da BI Engine, perché la maggior parte del tempo di esecuzione viene spesa per l'elaborazione dei dati non elaborati nelle sottoquery a livello di foglia.

Limitazioni

Per utilizzare BI Engine, la tua organizzazione deve riservare la capacità di BI Engine con un'edizione supportata. Per saperne di più, consulta Informazioni sulle edizioni di BigQuery.

Inoltre, BI Engine presenta limitazioni descritte nelle sezioni seguenti.

Unioni

BI Engine accelera alcuni tipi di query di unione. L'accelerazione avviene nelle sottoquery a livello di foglia con le unioni INNER e LEFT OUTER, in cui una tabella dei fatti di grandi dimensioni viene unita a un massimo di quattro tabelle delle dimensioni più piccole. Le tabelle delle dimensioni piccole presentano le seguenti limitazioni:

  • Meno di 5 milioni di righe
  • Limiti di dimensioni:
    • Tabelle non partizionate: massimo 5 GiB
    • Tabelle partizionate: partizioni a cui viene fatto riferimento massimo 1 GiB

Funzioni finestra

Le funzioni finestra, note anche come funzioni analitiche, presentano le seguenti limitazioni quando vengono accelerate da BI Engine:

  • Le fasi di input senza funzioni finestra vengono accelerate da BI Engine. In questo caso, la vista INFORMATION_SCHEMA.JOBS segnala bi_engine_statistics.acceleration_mode come FULL_INPUT.
  • Le fasi di input delle query con funzioni finestra vengono accelerate da BI Engine se rispettano le limitazioni delle funzioni finestra di BI Engine. In questo caso, le fasi di input o l'intera query vengono eseguite in BI Engine e la vista INFORMATION_SCHEMA.JOBS segnala bi_engine_statistics.acceleration_mode come FULL_INPUT o FULL_QUERY.

Per saperne di più sul campo BiEngineStatistics, consulta il riferimento ai job.

Limitazioni delle funzioni finestra di BI Engine

Le query con funzioni finestra vengono eseguite in BI Engine solo se tutte le seguenti condizioni sono vere:

  • La query esegue la scansione di esattamente una tabella.
    • La tabella non è partizionata.
    • La tabella contiene meno di 5 milioni di righe.
  • La query non ha operatori JOIN.
  • Le dimensioni della tabella sottoposta a scansione moltiplicate per il numero di operatori di funzione finestra non superano i 300 MiB.

Due funzioni finestra con clausole OVER identiche e gli stessi input diretti possono condividere lo stesso operatore di funzione finestra. Ad esempio:

  • SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table ha un solo operatore di funzione finestra.
  • SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table ha due operatori di funzione finestra perché le due funzioni hanno clausole OVER diverse.
  • SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table) ha due operatori di funzione finestra perché le due funzioni hanno input diretti diversi, anche se le relative clausole OVER sembrano uguali.

Funzioni finestra supportate

Sono supportate le seguenti funzioni finestra:

  • ANY_VALUE
  • AVG
  • BIT_AND
  • BIT_OR
  • BIT_XOR
  • CORR
  • COUNT
  • COUNTIF
  • COVAR_POP
  • COVAR_SAMP
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • LOGICAL_AND
  • LOGICAL_OR
  • MAX
  • MIN
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • ROW_NUMBER
  • ST_CLUSTERDBSCAN
  • STDDEV_POP
  • STDDEV_SAMP
  • STDDEV
  • STRING_AGG
  • SUM
  • VAR_POP
  • VAR_SAMP
  • VARIANCE

Se le funzioni finestra non sono supportate, potresti visualizzare il seguente messaggio di errore:

Analytic function is incompatible with other operators or its inputs are too large

Limitazioni di BI Engine non supportate

L'accelerazione di BI Engine non è disponibile per le seguenti funzionalità:

  • Funzioni definite dall'utente JavaScript e funzioni remote.
  • Tabelle esterne, incluse le tabelle BigLake.
  • Esecuzione di query sui dati JSON (messaggio di errore: JSON native type is not supported.).
  • Esecuzione di query sui dati RANGE (messaggio di errore: RANGE native type is not supported.).
  • Scrittura dei risultati in una tabella BigQuery permanente.
  • Tabelle contenenti upsert che utilizzano l'importazione di BigQuery Change Data Capture.
  • Transazioni.
  • Query che restituiscono più di 1 GiB di dati (per le applicazioni sensibili alla latenza, è consigliabile una dimensione della risposta inferiore a 1 MiB).
  • Sicurezza a livello di riga.
  • Query che utilizzano funzioni di ricerca e ricerca vettoriale (ad esempio la SEARCH funzione o la VECTOR_SEARCH funzione) o che sono ottimizzate dagli indici di ricerca o dagli indici vettoriali.
  • Query ricorsive che utilizzano RECURSIVE.
  • Query di BigQuery ML.

Soluzione alternativa per le funzionalità non supportate

Se la query utilizza funzionalità SQL non supportate, puoi utilizzare la seguente soluzione alternativa:

  1. Scrivi una query in BigQuery.
  2. Salva i risultati della query in una tabella.
  3. Pianifica la query in modo che la tabella venga aggiornata regolarmente. La frequenza di aggiornamento oraria o giornaliera è la più adatta. L'aggiornamento ogni minuto potrebbe invalidare la cache troppo spesso.
  4. Fai riferimento a questa tabella nelle query sensibili al rendimento.

Quote e limiti

Per le quote e i limiti applicati a BI Engine, consulta Quote e limiti di BigQuery.

Prezzi

I costi vengono addebitati per la prenotazione creata per la capacità di BI Engine. Per informazioni sui prezzi di BI Engine, consulta Prezzi di BigQuery.

Passaggi successivi