Introduzione alle viste materializzate
Le viste materializzate sono viste precalcolate che memorizzano periodicamente i risultati di una query SQL. Le viste materializzate possono ridurre i tempi di elaborazione totali e i costi relativi alle query memorizzando i risultati delle query, riducendo la quantità di dati da scansionare per ogni query. BigQuery verifica che le viste materializzate forniscano dati aggiornati calcolando gli aggiornamenti in background. Questa procedura viene eseguita in modo incrementale utilizzando solo i dati modificati nella tabella di base, in base a una serie di considerazioni. È possibile eseguire query direttamente sulle viste materializzate oppure BigQuery può usarle per ottimizzare le query sulle tabelle di base.
Le caratteristiche principali delle viste materializzate includono:
- Nessuna manutenzione. Le viste materializzate vengono precalcolate in background quando le tabelle di base cambiano. Tutte le modifiche incrementali dei dati delle tabelle di base vengono aggiunte automaticamente alle viste materializzate, senza che sia necessaria alcuna azione da parte dell'utente.
- 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 sulla tabella di base può essere risolta eseguendo query sulla vista materializzata, BigQuery reindirizza la query per utilizzare la vista materializzata per migliorare le prestazioni e l'efficienza.
Confronto con le viste logiche
La seguente tabella riassume le somiglianze e le differenze tra le viste logiche e le viste materializzate di BigQuery.
Componente | Viste logiche | Viste materializzate |
---|---|---|
Ottimizza le risorse di computing | No | Sì |
Supporto per le query | Tutti | Limitata1 |
Partizionamento e clustering | N/D | Sì |
Aggiornamento incrementale | No | Sì |
Spazio di archiviazione aggiuntivo | No | Sì |
Riscrizione delle query | No | Sì |
Costi di manutenzione | No | Sì |
Inattività dei dati | Mai | Facoltativo 2 |
1 L'opzione --allow_non_incremental_definition
supporta una gamma più ampia di query SQL per creare viste materializzate.
2 L'opzione --max_staleness
offre prestazioni elevate e costanti con costi controllati durante
l'elaborazione di set di dati di grandi dimensioni e in continua evoluzione.
Casi d'uso
Le viste materializzate possono ottimizzare le query con costi di calcolo elevati e risultati di set di dati di piccole dimensioni. I processi che traggono vantaggio dalle viste materializzate includono le operazioni di elaborazione analitica online (OLAP) che richiedono un'elaborazione significativa con query prevedibili e ripetute come quelle dei processi di estrazione, trasformazione e caricamento (ETL) o delle pipeline di business intelligence (BI).
I seguenti casi d'uso evidenziano il valore delle viste materializzate. Le viste materializzate possono migliorare le prestazioni delle query se hai spesso bisogno di:
- Aggrega i dati in anticipo. Aggregazione dei dati di streaming.
- Pre-filtrare i dati. Esegui query che leggono solo un sottoinsieme specifico della tabella.
- Dati pre-unione. Unioni di query, in particolare tra tabelle grandi e piccole.
- Raggruppa nuovamente i dati. Esegui query che trarrebbero vantaggio da uno schema di clustering diverso da quello delle tabelle di base.
Ottimizzazione intelligente
Le viste materializzate possono essere utilizzate per migliorare in modo trasparente le prestazioni delle query senza modificarle. Puoi utilizzare una vista materializzata per ottimizzare insiemi di query con pattern comuni, ad esempio quelle generate da uno strumento di BI. Per saperne di più, consulta Utilizzare le viste materializzate.
Viste materializzate autorizzate
Puoi creare una vista materializzata autorizzata per condividere un sottoinsieme di dati di un set di dati di origine con una vista in un set di dati secondario. Puoi quindi condividere questa visualizzazione con utenti e gruppi specifici (principal) che possono visualizzare i dati che condividi. I responsabili 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, vedi Visualizzazioni 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 analizzate (se presenti) e mostra quanti byte vengono 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 flusso 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 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.
Tabelle abilitate alla cache dei metadati BigLake
Le viste materializzate sulle tabelle con cache dei metadati BigLake 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 l'aggregazione, il filtraggio e l'unione preliminari dei dati archiviati al di fuori di BigQuery. Le viste materializzate sulle tabelle BigLake vengono archiviate e hanno tutte le caratteristiche dello spazio di archiviazione gestito BigQuery.
Quando crei una vista materializzata su una tabella BigLake Amazon S3, i dati nella vista materializzata non sono disponibili per i join con i dati BigQuery. Per rendere disponibili per i join i dati di Amazon S3 in una vista materializzata, crea una replica della vista materializzata. Puoi creare repliche della vista materializzata solo per le viste materializzate autorizzate.
Limitazioni
- Potrebbero essere applicati limiti ai riferimenti alle tabelle di base e altre limitazioni. Per ulteriori informazioni 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 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 ulteriori informazioni, vedi 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.
- 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 vanno a buon fine. Se ricrei la tabella di base, devi ricreare anche la vista materializzata.
- Se una vista materializzata ha una tabella di base con acquisizione delle modifiche ai dati abilitata, non è possibile fare riferimento a questa tabella nella stessa query della vista materializzata.
1Il supporto dei riferimenti alla visualizzazione logica è in anteprima. Per saperne di più, consulta Visualizzazioni logiche di riferimento.
Limitazioni delle viste materializzate sulle tabelle BigLake
- Il partizionamento della vista materializzata non è supportato. Le tabelle di base possono utilizzare il partizionamento Hive, ma lo spazio di archiviazione vista materializzata non può essere partizionato nelle tabelle BigLake. Ciò significa che qualsiasi eliminazione in una tabella di base causa un aggiornamento completo della vista materializzata. Per maggiori dettagli, vedi Aggiornamenti incrementali.
- Il valore dell'
-max_staleness
opzione della vista materializzata deve essere maggiore di quello della tabella base BigLake. - I join tra tabelle gestite BigQuery e 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:
- Eseguire query sulle viste materializzate.
- Manutenzione delle viste materializzate, ad esempio quando vengono aggiornate. Il costo dell'aggiornamento automatico viene fatturato al progetto in cui si trova 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.
- Memorizzazione delle tabelle delle vista materializzata.
Componente | Prezzi on demand | Prezzi basati sulla capacità |
---|---|---|
Query | Byte elaborati dalle viste materializzate e da qualsiasi parte necessaria delle tabelle di base.1 | Gli slot vengono utilizzati durante il tempo di esecuzione della query. |
Manutenzione | Byte elaborati durante l'ora di aggiornamento. | Gli slot vengono utilizzati durante il tempo di aggiornamento. |
Archiviazione | Byte archiviati nelle viste materializzate. | Byte archiviati nelle viste materializzate. |
1Se possibile, BigQuery legge solo le modifiche apportate dall'ultimo aggiornamento della vista. Per ulteriori informazioni, vedi 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 memorizzato direttamente. BigQuery memorizza internamente una vista materializzata come schizzo intermedio, che viene 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
Mentre la colonna avg_paid
viene visualizzata come NUMERIC
o FLOAT64
per l'utente,
internamente viene memorizzata come BYTES
, con i suoi contenuti in formato proprietario. Per il calcolo delle dimensioni dei dati,
la colonna viene trattata come BYTES
.