Introduzione alle viste materializzate

Le viste materializzate sono viste precalcolate che memorizzano periodicamente i risultati di una query SQL. In alcuni casi d'uso, le viste materializzate riducono il tempo di elaborazione totale e gli addebiti correlati riducendo la quantità di dati da scansionare per ogni query. Puoi eseguire query sulle viste materializzate come faresti con altre risorse di dati.

I seguenti casi d'uso evidenziano il valore delle viste materializzate:

  • Pre-elaborazione dei dati. Migliora il rendimento delle query preparando aggregazioni, filtri, join e cluster.
  • Accelerazione della dashboard. Consenti agli strumenti di BI come Looker di eseguire query frequenti sulle stesse metriche aggregate, ad esempio gli utenti attivi giornalieri.
  • Analisi in tempo reale su stream di grandi dimensioni. Può fornire risposte più rapide sulle tabelle che ricevono dati di streaming ad alta velocità.
  • Gestione dei costi. Riduci il costo delle query ripetitive e costose su set di dati di grandi dimensioni.

Le caratteristiche principali delle viste materializzate includono le seguenti:

  • Nessuna manutenzione. Le viste materializzate vengono precalcolate in background quando le tabelle di base cambiano. Eventuali modifiche incrementali dei dati dalle tabelle di base vengono aggiunte automaticamente alle viste materializzate, senza che l'utente debba eseguire alcuna azione.
  • Dati aggiornati. Le viste materializzate restituiscono dati aggiornati. Se le modifiche alle tabelle di base potrebbero invalidare la vista materializzata, i dati vengono letti direttamente dalle tabelle di base. Se le modifiche alle tabelle di base non invalidano la vista materializzata, il resto dei dati viene letto dalla vista materializzata e solo le modifiche vengono lette dalle tabelle di base.
  • Ottimizzazione intelligente. Se una parte di una query su una tabella di base può essere risolta eseguendo una query sulla vista materializzata, BigQuery reindirizza la query per utilizzare la vista materializzata al fine di migliorare il rendimento e l'efficienza. Per informazioni su come e quando l'ottimizzazione intelligente può migliorare le query, consulta Utilizzare le viste materializzate.

Viste materializzate incrementali e non incrementali

Esistono due tipi di base di viste materializzate:

  • Le viste materializzate incrementali supportano un insieme limitato di funzionalità. Per saperne di più sulla sintassi SQL supportata per le viste materializzate, consulta Creare viste materializzate. Solo le viste materializzate incrementali possono sfruttare l' ottimizzazione intelligente.
  • Le funzioni non incrementali supportano la maggior parte delle sintassi non supportate dalle viste materializzate incrementali.

Quando crei viste materializzate, per impostazione predefinita BigQuery ti consente di creare solo viste basate su query incrementali. Per creare una vista non incrementale, puoi specificare allow_non_incremental_definition = true nella definizione della vista materializzata.

Il tipo di vista materializzata migliore da utilizzare dipende dalla tua situazione. La seguente tabella mette a confronto le funzionalità delle viste materializzate incrementali e non incrementali:

Category Incrementale Non incrementale
Query supportata Limitata La maggior parte delle query
Costo di manutenzione Può ridurre il costo delle query utilizzate di frequente. Per scoprire come vengono aggiornate le viste materializzate, consulta Aggiornamenti incrementali. Ogni aggiornamento esegue la query completa.
Supporto per l'ottimizzazione intelligente Supportato per la maggior parte delle query sulle viste. No
Risultati sempre aggiornati Supportato. Le viste incrementali restituiscono risultati di query aggiornati anche se le tabelle di base sono state modificate dall'ultimo aggiornamento. No

Viste materializzate autorizzate

Puoi creare una vista materializzata autorizzata per condividere un sottoinsieme di dati da un set di dati di origine a una vista in un set di dati secondario. Puoi quindi condividere questa vista con utenti e gruppi (entità) specifici che possono visualizzare i dati che condividi. Le entità possono eseguire query sui dati che fornisci in una vista, ma non possono accedere direttamente al set di dati di origine.

Le viste autorizzate e le viste materializzate autorizzate vengono autorizzate nello stesso modo. Per maggiori dettagli, consulta Viste autorizzate.

Interazione con altre funzionalità di BigQuery

Le seguenti funzionalità di BigQuery funzionano in modo trasparente con le viste materializzate:

  • Spiegazione del piano di query: il piano di query riflette le viste materializzate scansionate (se presenti) e mostra il numero di byte letti dalle viste materializzate e dalle tabelle di base combinate.

  • Memorizzazione nella cache delle query: i risultati di una query che BigQuery riscrive utilizzando una vista materializzata possono essere memorizzati nella cache in base alle limitazioni consuete (utilizzo di funzioni deterministiche, nessun streaming nelle tabelle di base e così via).

  • Limitazione dei costi: se hai impostato un valore per i byte fatturati massimi e una query legge un numero di byte superiore al limite, la query non riesce senza comportare addebiti, indipendentemente dal fatto che la query utilizzi viste materializzate, le tabelle di base o entrambe.

  • Stima dei costi utilizzando il test dry run: un test dry run ripete la logica di riscrittura delle query utilizzando le viste materializzate disponibili e fornisce una stima dei costi. Puoi utilizzare questa funzionalità per verificare se una query specifica utilizza viste materializzate.

  • Replica dei dati tra regioni: le viste materializzate possono essere create sulle tabelle BigQuery per cui è abilitata la replica tra regioni, ma solo nella regione principale. Se viene utilizzata la regione secondaria, potresti visualizzare il seguente messaggio di errore: The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.

Tabelle BigLake con cache dei metadati abilitata

Le viste materializzate sulle tabelle BigLake con cache dei metadati abilitata possono fare riferimento a dati strutturati archiviati in Cloud Storage e Amazon Simple Storage Service (Amazon S3). Queste viste materializzate funzionano come le viste materializzate sulle tabelle di archiviazione gestite da BigQuery, inclusi i vantaggi dell'aggiornamento automatico e dell'ottimizzazione intelligente. Altri vantaggi includono la pre-aggregazione, il pre-filtraggio e il pre-join dei dati archiviati al di fuori di BigQuery. Le viste materializzate sulle tabelle BigLake vengono archiviate e hanno tutte le caratteristiche dell'archiviazione gestita di BigQuery.

Quando crei una vista materializzata su una tabella BigLake di Amazon S3, i dati nella vista materializzata non sono disponibili per i join con i dati BigQuery. Per rendere disponibili i dati di Amazon S3 in una vista materializzata per i join, crea una replica della vista materializzata. Puoi creare repliche di vista materializzata solo su viste materializzate autorizzate.

Limitazioni

  • Potrebbero essere applicati limiti ai riferimenti alle tabelle di base e altre restrizioni. Per saperne di più sui limiti delle vista materializzata, consulta Quote e limiti.
  • I dati di una vista materializzata non possono essere aggiornati o manipolati direttamente utilizzando operazioni come COPY, EXPORT, LOAD, WRITE o istruzioni DML (Data Manipulation Language).
  • Non puoi sostituire una vista materializzata esistente con una vista materializzata con lo stesso nome.
  • L'SQL della vista materializzata non può essere aggiornato dopo la creazione della vista materializzata.
  • Una vista materializzata deve risiedere nella stessa organizzazione delle tabelle di base o nello stesso progetto se il progetto non appartiene a un'organizzazione.
  • Le viste materializzate utilizzano una sintassi SQL limitata e un insieme limitato di funzioni di aggregazione. Per saperne di più, consulta Viste materializzate supportate.
  • Le viste materializzate non possono essere nidificate in altre viste materializzate.
  • Le viste materializzate non possono eseguire query su tabelle esterne o con caratteri jolly, viste logiche1 o snapshot.
  • Le variabili di sistema, inclusa la variabile di sistema @@session_id, non sono supportate con le viste materializzate.
  • Per le viste materializzate è supportato solo il dialetto GoogleSQL.
  • Puoi impostare le descrizioni per le viste materializzate, ma non puoi impostare le descrizioni per le singole colonne della vista materializzata.
  • Se elimini una tabella di base senza prima eliminare la vista materializzata, le query e gli aggiornamenti della vista materializzata non riescono. Se ricrei la tabella di base, devi ricreare anche la vista materializzata.
  • Se una vista materializzata ha una tabella di base con funzionalità di acquisizione dei dati modificati abilitata, non è possibile fare riferimento a questa tabella nella stessa query della vista materializzata.
  • Solo le vista materializzata non incrementali possono avere Spanner tabelle di base del set di dati esterni. Se l'ultimo aggiornamento di una vista materializzata non incrementale è avvenuto al di fuori dell'intervallo max_staleness, la query legge le tabelle del set di dati esterni di Spanner di base. Per saperne di più sulle tabelle del set di dati esterni di Spanner, consulta Creare viste materializzate su set di dati esterni di Spanner.
  • I risultati delle query non vengono memorizzati nella cache se la query viene eseguita su viste materializzate non incrementali che fanno riferimento a tabelle del set di dati esterni di Spanner.

1 Il supporto per i riferimenti alle viste logiche è in anteprima. Per saperne di più, consulta Fare riferimento alle viste logiche.

Limitazioni delle viste materializzate sulle tabelle BigLake

  • Il partizionamento della vista materializzata non è supportato. Le tabelle di base possono utilizzare il partizionamento Hive, ma l'archiviazione della vista materializzata non può essere partizionata nelle tabelle BigLake. Ciò significa che qualsiasi eliminazione in una tabella di base causa un aggiornamento completo della vista materializzata. Per maggiori dettagli, consulta Aggiornamenti incrementali.
  • Il valore dell'--max_staleness opzione della vista materializzata deve essere maggiore di quello della tabella di base BigLake.
  • I join tra le tabelle gestite da BigQuery e le tabelle BigLake non sono supportati in una singola definizione di vista materializzata.
  • BigQuery BI Engine non supporta l'accelerazione delle viste materializzate sulle tabelle BigLake.

Prezzi delle viste materializzate

I costi sono associati ai seguenti aspetti delle viste materializzate:

  • Esecuzione di query sulle viste materializzate.
  • Manutenzione delle viste materializzate, ad esempio quando le viste materializzate vengono aggiornate. Il costo dell'aggiornamento automatico viene addebitato al progetto in cui risiede la vista. Il costo dell'aggiornamento manuale viene addebitato al progetto in cui viene eseguito il job di aggiornamento manuale. Per saperne di più sul controllo dei costi di manutenzione, consulta Manutenzione dei job di aggiornamento.
  • Archiviazione delle tabelle delle vista materializzata.
Componente Prezzi on demand Prezzi basati sulla capacità
Esecuzione di query Byte elaborati dalle viste materializzate e da eventuali parti necessarie delle tabelle di base.1 Gli slot vengono utilizzati durante il tempo di esecuzione delle query.
Manutenzione Byte elaborati durante il tempo di aggiornamento. Gli slot vengono utilizzati durante il tempo di aggiornamento.
Archiviazione Byte archiviati nelle viste materializzate. Byte archiviati nelle viste materializzate.

1 Se possibile, BigQuery legge solo le modifiche apportate da ll'ultimo aggiornamento della vista. Per saperne di più, consulta Aggiornamenti incrementali.

Dettagli sui costi di archiviazione

Per i valori aggregati AVG, ARRAY_AGG e APPROX_COUNT_DISTINCT in una vista materializzata, il valore finale non viene archiviato direttamente. Invece, BigQuery archivia internamente una vista materializzata come uno sketch intermedio, utilizzato per produrre il valore finale.

Ad esempio, considera una vista materializzata creata con il seguente comando:

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT date, AVG(net_paid) AS avg_paid
FROM project-id.my_dataset.my_base_table
GROUP BY date

Sebbene la colonna avg_paid venga visualizzata come NUMERIC o FLOAT64 per l'utente, internamente viene archiviata come BYTES, con un contenuto che è uno sketch intermedio in formato proprietario. Per il calcolo delle dimensioni dei dati, la colonna viene trattata come BYTES.

Passaggi successivi