Gestire le viste materializzate
Questo documento descrive come gestire le viste materializzate in BigQuery.
La gestione delle viste materializzate di BigQuery include le seguenti operazioni:
- Modificare le viste materializzate
- Elenca le viste materializzate
- Ottenere informazioni sulle viste materializzate
- Eliminare le viste materializzate
- Aggiornare le viste materializzate
Per ulteriori informazioni sulle viste materializzate, consulta le seguenti risorse:
- Introduzione alle viste materializzate
- Creare viste materializzate
- Utilizzare le viste materializzate
- Monitorare le viste materializzate
Prima di iniziare
Concedi ruoli IAM (Identity and Access Management) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività descritta in questo documento. Le autorizzazioni richieste per eseguire un'attività (se presenti) sono elencate nella sezione "Autorizzazioni richieste" dell'attività.
Modifica le viste materializzate
Puoi modificare una vista materializzata tramite la console Google Cloud o lo strumento a riga di comando bq utilizzando il linguaggio di definizione dei dati (DDL) con ALTER MATERIALIZED
VIEW
e SET OPTIONS
. Per
un elenco di opzioni della vista materializzata, consulta materialized_view_set_options_list
.
Di seguito è riportato un esempio che imposta enable_refresh
su true
. Modifica in base
alle esigenze del tuo caso d'uso.
Autorizzazioni obbligatorie
Per modificare le viste materializzate, devi disporre delle autorizzazioni IAM bigquery.tables.get
e
bigquery.tables.update
.
Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per modificare una vista materializzata:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Per saperne di più su BigQuery Identity and Access Management (IAM), vedi Ruoli e autorizzazioni predefiniti.
SQL
Per modificare una vista materializzata, utilizza l'istruzione DDL ALTER MATERIALIZED VIEW SET OPTIONS
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Sostituisci quanto segue:
PROJECT
: il nome del progetto che contiene la vista materializzataDATASET
: il nome del set di dati che contiene la vista materializzataMATERIALIZED_VIEW
: il nome della vista materializzata che vuoi modificare
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Esegui il comando bq update
:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Elenca le viste materializzate
Puoi elencare le viste materializzate tramite la console Google Cloud , lo strumento a riga di comando bq o l'API BigQuery.
Autorizzazioni obbligatorie
Per elencare le viste materializzate in un set di dati, devi disporre dell'autorizzazione IAM bigquery.tables.list
.
Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per elencare le viste materializzate in un set di dati:
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Per saperne di più sui ruoli e sulle autorizzazioni IAM in IAM, consulta Ruoli e autorizzazioni predefiniti.
La procedura per elencare le viste materializzate è identica a quella per elencare le tabelle. Per elencare le viste materializzate in un set di dati:
Console
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
Scorri l'elenco per visualizzare le tabelle nel set di dati. Tabelle, viste e viste materializzate sono identificate da icone diverse.
bq
Esegui il comando bq ls
. Il flag --format
può essere utilizzato per controllare
l'output. Se elenchi le viste materializzate in un progetto diverso da quello
predefinito, aggiungi l'ID progetto al set di dati nel seguente formato:
project_id:dataset
.
bq ls --format=pretty project_id:dataset
Dove:
- project_id è l'ID progetto.
- dataset è il nome del set di dati.
Quando esegui il comando, il campo Type
mostra il tipo di tabella.
Ad esempio:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Esempi:
Inserisci il comando seguente per elencare le viste materializzate nel set di dati
mydataset
nel tuo progetto predefinito.
bq ls --format=pretty mydataset
Inserisci il comando seguente per elencare le viste materializzate nel set di dati
mydataset
in myotherproject
.
bq ls --format=pretty myotherproject:mydataset
API
Per elencare le viste materializzate utilizzando l'API, chiama il metodo
tables.list
.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Ottenere informazioni sulle viste materializzate
Puoi ottenere informazioni su una vista materializzata utilizzando SQL, lo strumento a riga di comando bq o l'API BigQuery.
Autorizzazioni obbligatorie
Per eseguire query sulle informazioni relative a una vista materializzata, devi disporre delle seguenti autorizzazioni Identity and Access Management (IAM):
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.
Per ottenere informazioni su una vista materializzata, incluse eventuali repliche della vista materializzata:
SQL
Per ottenere informazioni sulle viste materializzate, esegui una query sulla
vista INFORMATION_SCHEMA.TABLES
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Sostituisci quanto segue:
PROJECT_ID
: il nome del progetto che contiene le viste materializzateDATASET_ID
: il nome del set di dati che contiene le viste materializzate
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Utilizza il
comando bq show
:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Sostituisci quanto segue:
- project_id: l'ID progetto Devi includere questo flag solo per ottenere informazioni su una vista materializzata in un progetto diverso da quello predefinito.
- dataset: il nome del set di dati che contiene la vista materializzata.
- materialized_view: il nome della vista materializzata di cui vuoi informazioni.
Esempio:
Inserisci il comando seguente per visualizzare le informazioni sulla vista materializzata
my_mv
nel set di dati report_views
nel progetto myproject
.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Per ottenere informazioni sulla vista materializzata utilizzando l'API, chiama il metodo
tables.get
.
Elimina viste materializzate
Puoi eliminare una vista materializzata tramite la console Google Cloud , lo strumento a riga di comando bq o l'API.
L'eliminazione di una vista materializzata comporta anche l'eliminazione di tutte le autorizzazioni associate a questa vista materializzata. Quando ricrei una vista materializzata eliminata, devi anche riconfigurare manualmente le autorizzazioni di accesso associate in precedenza.
Autorizzazioni obbligatorie
Per eliminare le viste materializzate, devi disporre dell'autorizzazione IAM bigquery.tables.delete
.
Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per eliminare una vista materializzata:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Per saperne di più su BigQuery Identity and Access Management (IAM), vedi Ruoli e autorizzazioni predefiniti.
SQL
Per eliminare una vista materializzata, utilizza l'istruzione DDL DROP MATERIALIZED VIEW
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Sostituisci quanto segue:
PROJECT
: il nome del progetto che contiene la vista materializzataDATASET
: il nome del set di dati che contiene la vista materializzataMATERIALIZED_VIEW
: il nome della vista materializzata che vuoi eliminare
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Utilizza il comando bq rm
per eliminare la vista materializzata.
API
Chiama il metodo tables.delete
e specifica i valori per i parametri projectId
, datasetId
e tableId
:
- Assegna il parametro
projectId
all'ID progetto. - Assegna il parametro
datasetId
all'ID del tuo set di dati. - Assegna il parametro
tableId
all'ID tabella della vista materializzata che stai eliminando.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Aggiorna le viste materializzate
L'aggiornamento di una vista materializzata aggiorna i dati memorizzati nella cache della vista in modo che riflettano lo stato attuale delle tabelle di base.
Quando esegui una query su una vista materializzata, BigQuery restituisce i risultati sia dai dati della vista materializzata memorizzati nella cache sia dai dati recuperati dalla tabella di base. Ove possibile, BigQuery legge solo le modifiche apportate dall'ultimo aggiornamento della vista. Anche se i dati trasmessi in streaming di recente potrebbero non essere inclusi durante l'aggiornamento della vista materializzata, le query leggono sempre i dati trasmessi in streaming indipendentemente dall'utilizzo di una vista materializzata.
La restituzione dei risultati della query direttamente dalla tabella di base comporta un costo di calcolo superiore rispetto alla restituzione dei risultati dai dati della vista materializzata memorizzati nella cache. L'aggiornamento regolare dei dati memorizzati nella cache della vista materializzata riduce la quantità di dati restituiti direttamente dalla tabella di base, il che riduce il costo di calcolo.
Questa sezione descrive come:
Aggiornamento automatico
Puoi attivare o disattivare l'aggiornamento automatico in qualsiasi momento. Il job di aggiornamento automatico
viene eseguito dall'account di servizio bigquery-adminbot@system.gserviceaccount.com
e viene visualizzato nella cronologia dei job del progetto di vista materializzata.
Per impostazione predefinita, i dati memorizzati nella cache di una vista materializzata vengono aggiornati automaticamente dalla tabella di base entro 5-30 minuti da una modifica alla tabella di base, ad esempio inserimenti o eliminazioni di righe.
Puoi impostare il limite di frequenza di aggiornamento per gestire la frequenza degli aggiornamenti automatici dei dati memorizzati nella cache e quindi gestire i costi e le prestazioni delle query delle viste materializzate.
Attivare e disattivare l'aggiornamento automatico
Per disattivare l'aggiornamento automatico quando crei una vista materializzata,
imposta enable_refresh
su false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
Per una vista materializzata esistente, puoi modificare il valore enable_refresh
utilizzando ALTER MATERIALIZED VIEW
.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Impostare la quota limite
Puoi configurare una quota limite per la frequenza di esecuzione dell'aggiornamento automatico. Per impostazione predefinita, le viste materializzate vengono aggiornate non più spesso di ogni 30 minuti.
Il limite della frequenza di aggiornamento può essere modificato in qualsiasi momento.
Per impostare un limite alla frequenza di aggiornamento quando crei una vista materializzata, imposta
refresh_interval_minutes
in DDL (o refresh_interval_ms
nell'API e
nello strumento a riga di comando bq) sul valore che preferisci.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
Allo stesso modo, puoi impostare la quota limite quando modifichi una vista materializzata. Questo esempio presuppone che tu abbia già attivato l'aggiornamento automatico e che tu voglia solo modificare la quota limite:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
La quota limite minima per la frequenza di aggiornamento è di 1 minuto. La quota limite di aggiornamento massima è di 7 giorni.
Puoi eseguire un aggiornamento manuale di una vista materializzata in qualsiasi momento e la sua tempistica non è soggetta al limite di frequenza.
Best effort
L'aggiornamento automatico viene eseguito al meglio delle possibilità. BigQuery tenta di avviare un aggiornamento entro 5 minuti da una modifica alla tabella di base (se l'aggiornamento precedente è stato eseguito più di 30 minuti prima), ma non garantisce che l'aggiornamento verrà avviato in quel momento né quando verrà completato.
L'aggiornamento automatico viene trattato in modo simile a una query con priorità batch. Se il progetto della vista materializzata non ha la capacità al momento, l'aggiornamento viene ritardato. Se il progetto contiene molte viste il cui aggiornamento risulta costoso, ogni singola vista potrebbe essere in ritardo in modo significativo rispetto alle tabelle di base.
Aggiornamento manuale
Puoi aggiornare manualmente una vista materializzata in qualsiasi momento.
Autorizzazioni obbligatorie
Per aggiornare manualmente le viste materializzate, devi disporre delle autorizzazioni IAM bigquery.tables.getData
, bigquery.tables.update
e bigquery.tables.updateData
.
Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per aggiornare manualmente una vista materializzata:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Per saperne di più su BigQuery Identity and Access Management (IAM), vedi Ruoli e autorizzazioni predefiniti.
Per aggiornare i dati nella vista materializzata, chiama la procedura di sistema
BQ.REFRESH_MATERIALIZED_VIEW
. Quando viene chiamata questa procedura, BigQuery identifica le modifiche apportate alle tabelle di base e le applica alla vista materializzata. La query da eseguire
BQ.REFRESH_MATERIALIZED_VIEW
termina al termine dell'aggiornamento.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Monitorare le viste materializzate
Puoi ottenere informazioni sulle viste materializzate e sui job di aggiornamento delle viste materializzate utilizzando l'API BigQuery. Per ulteriori informazioni, vedi Monitorare le viste materializzate.