Introduzione a BI Engine

BigQuery BI Engine è un servizio di analisi in memoria rapido che accelera molte query SQL in BigQuery memorizzando in modo intelligente nella cache i dati che utilizzi più spesso. BI Engine può accelerare le query SQL da qualsiasi origine, incluse quelle scritte dagli 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 regolazioni manuali o gerarchie di dati. Puoi clusterizzare 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 solo le partizioni più recenti vengano caricate in memoria. Puoi anche combinare i vantaggi delle visualizzazioni materializzate e di BI Engine. Questo funziona particolarmente bene quando le viste materializzate vengono utilizzate per unire e appianare i dati al fine di ottimizzarne la struttura per BI Engine.

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 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 moderna delle CPU, operando su più batch di dati alla volta. BI Engine utilizza anche codifiche dei dati avanzate, in particolare la codifica di lunghezza di esecuzione 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 visualizzazioni 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. Il motore BI memorizza nella cache solo le parti richieste delle colonne e delle 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 attivato da un amministratore di fatturazione che deve prenotare la capacità per l'accelerazione di BI Engine. Per saperne di più, consulta Prenotare la capacità di BI Engine.

Casi d'uso di BI Engine

BI Engine può accelerare in modo significativo molte query SQL, tra cui quelle utilizzate per le dashboard di Business Intelligence. L'accelerazione è più efficace se identifichi le tabelle essenziali per le tue query e poi le contrassegni come tabelle preferite. Per utilizzare BI Engine, devi creare una prenotazione in una regione e specificarne le dimensioni. Puoi lasciare che sia BigQuery a determinare 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 di BI per analizzare i tuoi dati: BI Engine accelera le query BigQuery, indipendentemente dal fatto che vengano eseguite nella console BigQuery, in uno strumento di BI come Looker Studio o Tableau o in una libreria client, un'API o un connettore ODBC o JDBC. In questo modo, puoi migliorare notevolmente le prestazioni delle dashboard collegate a BigQuery tramite una connessione (API) o connettori integrati.
  • Hai eseguito query frequentemente sulle tabelle: 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ù di frequente o che vengono utilizzate per dashboard ad alta visibilità.

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

  • Utilizzi i 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à di BigQuery non supportate da BI Engine: sebbene BI Engine supporti la maggior parte delle funzioni e degli operatori SQL, le funzionalità non supportate di 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. Innanzitutto, 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 è ideale per i dati pre-uniti o pre-aggregati e per le query con un numero ridotto di join. Questo è particolarmente vero quando un lato del join è di grandi dimensioni e gli altri sono molto più piccoli, ad esempio quando esegui query su una tabella di fatti di grandi dimensioni unita a tabelle di dimensioni più piccole. Puoi combinare BI Engine con le viste materializzate, che eseguono join per produrre una singola tabella piatta di grandi dimensioni. In questo modo, le stesse unioni non vengono eseguite per ogni query. Per un rendimento ottimale delle query, sono consigliate le viste materializzate obsolete.

Informazioni sull'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 sezione 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 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 è presente RAM sufficiente per contenere tutte le tabelle preferite, BI Engine esegue il offload delle partizioni e delle colonne a cui non è stato eseguito l'accesso di recente. Questo processo libera memoria per le nuove query che richiedono accelerazione.

Limitazioni delle tabelle preferite

Le tabelle preferite di BI Engine presentano le seguenti limitazioni:

  • Non puoi aggiungere visualizzazioni 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 sono 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 di una query con un JOIN devono essere nell'elenco delle tabelle preferite per essere accelerate. Se anche una tabella non è 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

BigQuery BI Engine presenta le seguenti limitazioni.

Unioni

BI Engine accelera determinati tipi di query di join. L'accelerazione avviene su sottoquery a livello di entità con INNER e LEFT OUTER JOINS, dove una grande tabella di fatti viene unita a un massimo di quattro tabelle "di dimensioni" più piccole. Le tabelle di dimensioni piccole presentano le seguenti limitazioni:

  • Meno di 5 milioni di righe
  • Limite di dimensioni:
    • Tabelle non partizionate: massimo 5 GiB
    • Tabelle partizionate: partizioni di riferimento di dimensioni pari o inferiori a 1 GB

Funzioni finestra

Le funzioni finestra, chiamate anche 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 window. In questo caso, INFORMATION_SCHEMA.JOBS visualizza i report bi_engine_statistics.acceleration_mode sotto forma di FULL_INPUT.
  • Le fasi di input delle query con funzioni di finestra nelle relative fasi di input vengono accelerate da BI Engine, ma non presentano le limitazioni descritte in Limitazioni delle funzioni di finestra di BI Engine. In questo caso, le fasi di input o la query completa vengono eseguite in BI Engine. In questo caso, INFORMATION_SCHEMA.JOBS visualizza i report bi_engine_statistics.acceleration_mode come FULL_INPUT o FULL_QUERY.

Per ulteriori informazioni sul campo BiEngineStatistics, consulta Riferimento attività.

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.
  • Le dimensioni della tabella sottoposta a scansione moltiplicate per il numero di operatori di funzione finestra non devono superare i 300 MB.

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 si fa 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 di analisi non è compatibile con altri operatori o i relativi 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
  • 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

Soluzione alternativa per le funzionalità non supportate

Sebbene alcune funzionalità SQL non siano supportate in BigQuery BI Engine, è disponibile una soluzione alternativa:

  1. Scrivi una query in BigQuery.
  2. Salva i risultati della query in una tabella.
  3. Pianifica la query per aggiornare la tabella regolarmente. È 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 le prestazioni.

Quote e limiti

Consulta Quote e limiti di BigQuery per informazioni sulle quote e sui 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