Introduzione a BI Engine
BigQuery BI Engine è un servizio di analisi in memoria rapido che accelera molte query SQL in BigQuery memorizzando nella cache in modo intelligente i dati che utilizzi più di frequente. BI Engine può accelerare le query SQL da qualsiasi origine, incluse quelle scritte da strumenti di visualizzazione dei dati, e può gestire le tabelle memorizzate nella cache per l'ottimizzazione continua. In questo modo puoi migliorare le prestazioni delle query senza ottimizzazione manuale o suddivisione dei dati in livelli. Puoi raggruppare e partizionare le tabelle per ottimizzare ulteriormente le prestazioni 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 in memoria vengano caricate solo le partizioni più recenti. Puoi anche combinare i vantaggi delle viste materializzate e di BI Engine. Questo funziona particolarmente bene quando le viste materializzate vengono utilizzate per unire e appiattire i dati per ottimizzarne la struttura per BI Engine.
BI Engine offre i seguenti vantaggi:
- Compatibilità dell'API BigQuery:BI Engine si integra direttamente con l'API BigQuery. Qualsiasi soluzione di BI o applicazione personalizzata che funzioni con l'API BigQuery tramite meccanismi standard come REST o driver JDBC e ODBC può utilizzare BI Engine senza modifiche.
- Runtime vettoriale: 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 memoria.
- 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 BI Engine gestiscono separatamente l'allocazione della memoria per ogni progetto e regione. BI Engine memorizza nella cache solo le parti richieste e sottoposte a query di colonne e partizioni. Puoi specificare le tabelle che utilizzano l'accelerazione BI Engine con le tabelle preferite.
Nella maggior parte delle organizzazioni, BI Engine viene abilitato da un amministratore della fatturazione che deve prenotare la capacità per l'accelerazione di BI Engine con un'edizione appropriata. Per saperne di più, consulta Riserva capacità BI Engine.
Casi d'uso di BI Engine
BI Engine può accelerare in modo significativo molte query SQL, incluse quelle utilizzate per i dashboard BI. L'accelerazione è più efficace se identifichi le tabelle essenziali per le tue query e le contrassegni come tabelle preferite. Per utilizzare BI Engine, crea una prenotazione in una regione e specifica le dimensioni. Puoi lasciare che BigQuery determini quali tabelle memorizzare nella cache in base ai pattern di utilizzo del progetto oppure puoi specificare le tabelle per impedire ad altro traffico di interferire con la loro accelerazione.
BI Engine è utile nei seguenti casi d'uso:
- Utilizzi strumenti BI per analizzare i dati: BI Engine accelera le query BigQuery indipendentemente dal fatto che vengano eseguite nella console BigQuery, in uno strumento BI come Looker Studio o Tableau oppure in una libreria client, un'API o un connettore ODBC o JDBC. In questo modo è possibile migliorare significativamente le prestazioni dei dashboard connessi a BigQuery tramite una connessione (API) o connettori integrati.
- Hai tabelle sottoposte a query frequenti: BI Engine ti consente di designare le tabelle preferite da accelerare. Questa opzione è utile se hai un sottoinsieme di tabelle su cui vengono eseguite query più frequentemente o che vengono 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 beneficiano dell'accelerazione.
- Hai bisogno di funzionalità BigQuery non supportate da BI Engine: anche se BI Engine supporta la maggior parte delle funzioni e degli operatori SQL, le funzionalità non supportate da BI Engine includono tabelle esterne, sicurezza a livello di riga e funzioni definite dall'utente non SQL.
Considerazioni per 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 BI Engine dedicata. Per prima cosa, stima la capacità di calcolo necessaria per le tue query, poi designa queste tabelle come tabelle preferite per BI Engine.
Riduci 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 join. Ciò è particolarmente vero quando un lato del join è grande e gli altri sono molto più piccoli, ad esempio quando esegui una 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 join per produrre una singola tabella grande e piatta. In questo modo, gli stessi join non vengono eseguiti per ogni query. Le viste materializzate obsolete sono consigliate per prestazioni ottimali delle query.
Comprendere l'impatto di BI Engine
Per comprendere il tuo utilizzo di BI Engine, consulta
Monitorare BI Engine con Cloud Monitoring
o esegui query sulle visualizzazioni
INFORMATION_SCHEMA.BI_CAPACITIES
e
INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
. Assicurati di disattivare l'opzione Utilizza i risultati memorizzati nella cache in
BigQuery per ottenere il confronto più accurato. Per ulteriori
informazioni, consulta la pagina 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 specificato di tabelle. Le query a tutte le altre tabelle utilizzano slot BigQuery regolari. 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 è presente RAM sufficiente per contenere tutte le tabelle preferite, BI Engine scarica le partizioni e le colonne a cui non è stato eseguito l'accesso di recente. Questo processo 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 all'elenco delle prenotazioni delle tabelle preferite. Le tabelle preferite di BI Engine supportano solo le tabelle.
- Le query alle viste materializzate vengono accelerate solo se sia le viste materializzate sia le relative tabelle di base si trovano 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
JOIN
devono essere nell'elenco delle tabelle preferite per essere accelerate. Se anche una sola tabella non è presente nell'elenco preferito, la query non può utilizzare BI Engine. - I set di dati pubblici non sono supportati nella console Google Cloud . Per aggiungere una tabella pubblica come tabella preferita, utilizza l'API o il DDL.
Limitazioni
Per utilizzare BI Engine, la tua organizzazione deve acquistare capacità BI Engine creando una prenotazione BI Engine con una versione supportata. Per ulteriori informazioni, vedi Informazioni sulle versioni di BigQuery.
Inoltre, BigQuery BI Engine presenta le seguenti limitazioni.
Unioni
BI Engine accelera determinati tipi di query di join. L'accelerazione
si verifica nelle sottoquery a livello di foglia con INNER
e LEFT OUTER JOINS
,
in cui una tabella dei fatti di grandi dimensioni viene unita a un massimo di quattro tabelle "dimensioni" più piccole.
Le tabelle delle dimensioni piccole presentano le seguenti limitazioni:
- Meno di 5 milioni di righe
- Limite di dimensioni:
- Tabelle non partizionate: massimo 5 GiB
- Tabelle partizionate: partizioni a cui viene fatto riferimento di 1 GB o meno
Funzioni finestra
Le funzioni finestra, note anche come funzioni analitiche, presentano le seguenti limitazioni quando vengono accelerate da BigQuery BI Engine:
- Le fasi di input vengono accelerate da BigQuery BI Engine se non hanno
funzioni finestra. In questo caso
INFORMATION_SCHEMA.JOBS
visualizza reportbi_engine_statistics
.acceleration_mode
comeFULL_INPUT
. - Le fasi di input delle query con funzioni finestra nelle fasi di input
vengono accelerate da BI Engine, ma non presentano le limitazioni
descritte in Limitazioni delle funzioni finestra di BI Engine.
In questo caso, le fasi di input o l'intera query vengono eseguite in
BI Engine. In questo caso
INFORMATION_SCHEMA.JOBS
visualizza reportbi_engine_statistics
.acceleration_mode
comeFULL_INPUT
oFULL_QUERY
.
Per saperne di più sul campo BiEngineStatistics
, consulta il
Riferimento lavorativo.
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 una sola tabella.
- La tabella non è partizionata.
- La tabella contiene meno di 5 milioni di righe.
- La query non contiene operatori
JOIN
. - La dimensione della tabella analizzata moltiplicata per il numero di operatori di funzione finestra non supera 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 clausoleOVER
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 clausoleOVER
sembrano uguali.
Funzioni finestra supportate
Sono supportate le seguenti funzioni finestra a cui viene fatto riferimento:
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 errore:
La funzione analitica è incompatibile con altri operatori o i suoi input sono troppo grandi
Altre limitazioni di BI Engine
L'accelerazione di BI Engine non è disponibile per le seguenti funzionalità:
- Funzioni definite dall'utente JavaScript
- Tabelle esterne, incluse le tabelle BigLake
- Esecuzione di query sui dati JSON - Messaggio di errore: Il tipo nativo JSON non è supportato
- Scrittura dei risultati in una tabella BigQuery permanente
- Tabelle contenenti upsert che utilizzano BigQuery Change Data Capture
- Transazioni
- Query che restituiscono più di 1 GiB di dati. Per le applicazioni sensibili alla latenza, è consigliata una dimensione della risposta inferiore a 1 MiB.
- Sicurezza a livello di riga
- Query che utilizzano la funzione
SEARCH
o sono ottimizzate dagli indici di ricerca
Soluzione alternativa per le funzionalità non supportate
Sebbene alcune funzionalità SQL non siano supportate in BigQuery BI Engine, esiste una soluzione alternativa:
- Scrivi una query in BigQuery.
- Salva i risultati della query in una tabella.
- Pianifica la query per aggiornare regolarmente la tabella. È preferibile una frequenza di aggiornamento oraria o giornaliera. L'aggiornamento ogni minuto potrebbe invalidare la cache troppo spesso.
- Fai riferimento a questa tabella nelle query critiche per il rendimento.
Quote e limiti
Consulta Quote e limiti di BigQuery per le quote e i limiti che si applicano a BI Engine.
Prezzi
Ti vengono addebitati i costi per la prenotazione che crei per la capacità di BI Engine. Per informazioni sui prezzi di BI Engine, consulta la pagina Prezzi di BigQuery.
Passaggi successivi
- Per scoprire come creare la prenotazione BI Engine, consulta Prenota capacità BI Engine.
- Per informazioni sulla designazione delle tabelle preferite, consulta Tabelle preferite di BI Engine.
- Per comprendere l'utilizzo di BI Engine, consulta Monitorare BI Engine con Cloud Monitoring.
- Scopri di più sulle funzioni ottimizzate per BI Engine
- Scopri come utilizzare BI Engine con quanto segue: