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 report bi_engine_statistics.acceleration_mode come FULL_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 report bi_engine_statistics.acceleration_mode come FULL_INPUT o FULL_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 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 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:

  1. Scrivi una query in BigQuery.
  2. Salva i risultati della query in una tabella.
  3. 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.
  4. 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