Monitorare le viste materializzate

Puoi monitorare l'utilizzo delle viste materializzate e aggiornare i job visualizzando la vista INFORMATION_SCHEMA di BigQuery. Per creare un elenco di viste materializzate, consulta Elenco delle viste materializzate.

Vista INFORMATION_SCHEMA vista materializzata

Per scoprire le viste materializzate, esegui una query sulla INFORMATION_SCHEMA.TABLES vista. Per recuperare le proprietà di una vista materializzata, esegui una query sulla vista INFORMATION_SCHEMA.TABLE_OPTIONS.

Le viste materializzate non sono elencate nella tabella delle visualizzazioni INFORMATION_SCHEMA.VIEWS.

Monitorare l'aggiornamento automatico

Questa sezione mostra come visualizzare i dettagli di aggiornamento per le visualizzazioni con dati materiali.

Visualizza lo stato dell'ultimo aggiornamento

Per recuperare lo stato corrente delle viste materializzate, chiama il metodo tables.get o esegui una query sulla vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS.

Ad esempio:

SELECT
  table_name, last_refresh_time, refresh_watermark, last_refresh_status
FROM
  `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

Se il valore di last_refresh_status non è NULL, l'ultimo job di aggiornamento automatico non è riuscito. Le richieste di aggiornamento manuale non vengono visualizzate qui. Le modifiche alle tabelle di base possono invalidare una definizione di vista materializzata, causando un errore durante l'aggiornamento automatico. Per ulteriori informazioni, consulta la sezione Aggiornamenti incrementali. Ad esempio, se una colonna a cui fa riferimento la vista materializzata viene eliminata dalla tabella di base, il campo last_refresh_status restituisce un errore invalidQuery. Per ulteriori informazioni, vedi Messaggi di errore.

Elenca i job di aggiornamento automatico

Per elencare i job di aggiornamento automatico vista materializzata, chiama il metodo jobs.list. Per recuperare i dettagli sui job, chiama il metodo jobs.get. Puoi anche eseguire query sulle INFORMATION_SCHEMA.JOBS_BY_* visualizzazioni per recuperare i job. I job di aggiornamento automatico contengono il prefisso materialized_view_refresh all'interno dell'ID job e vengono avviati da un account amministratore BigQuery.

Ad esempio:

SELECT
  job_id, total_slot_ms, total_bytes_processed,
  materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason
  AS full_refresh_reason
FROM
  `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE
  job_id LIKE '%materialized_view_refresh_%'
LIMIT 10;

Per monitorare il costo dei job di aggiornamento e regolare l'intervallo di aggiornamento automatico, se necessario, visualizza i campi total_bytes_processed e total_slot_ms.

Ad esempio, se la frequenza di importazione nelle tabelle di base è relativamente ridotta, è consigliabile aggiornare la visualizzazione meno spesso. Se i dati sottostanti cambiano rapidamente, è consigliabile aggiornarli più spesso.

Se le tabelle di base importano i dati in momenti predefiniti, ad esempio utilizzando una pipeline ETL (estrazione, trasformazione e caricamento) notturna, ti consigliamo di prendere il controllo della pianificazione della manutenzione vista materializzata nel seguente modo:

  1. Disattiva l'aggiornamento automatico.

  2. Esegui un aggiornamento manuale, in quanto parte della pipeline ETL o configurando una query pianificata in momenti specifici della giornata.

Per ulteriori informazioni sui prezzi delle visualizzazioni materializzate, consulta la sezione Prezzi delle visualizzazioni materializzate.

Monitorare l'utilizzo vista materializzata

Per visualizzare l'utilizzo della vista materializzata per un job di query, puoi chiamare il metodo jobs.get o eseguire una query sulla vista INFORMATION_SCHEMA.JOBS_BY_*, e visualizzare il campo materialized_view_statistics. Fornisce dettagli sull' utilizzo delle viste edificate dalla query, inclusi i seguenti dettagli:

  • Indica se la vista materializzata è stata utilizzata.
  • Se la vista materializzata non è stata utilizzata, il motivo del rifiuto.

Ad esempio:

SELECT
  job_id, materialized_view_statistics
FROM
  region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  job_id = '<my-query-job-id>';

Per visualizzare l'utilizzo di una vista materializzata nel tempo, esegui una query sulle viste INFORMATION_SCHEMA.JOBS_BY_*.

Ad esempio, la seguente query restituisce un riepilogo dei job di query recenti che utilizzano la vista materializzata di destinazione:

SELECT
  mv.table_reference.dataset_id,
  mv.table_reference.table_id,
  MAX(job.creation_time) latest_job_time,
  COUNT(job_id) job_count
FROM
  region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job,
  UNNEST(materialized_view_statistics.materialized_view) mv
WHERE
  job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY)
  AND mv.table_reference.dataset_id = 'my_dataset'
  AND mv.table_reference.table_id = 'my_materialized_view'
  AND mv.chosen = TRUE
GROUP BY 1, 2;

Risolvere i problemi di lentezza delle query con le viste materializzate

Se la query utilizza viste materializzate ed è più lenta del previsto, segui questi passaggi:

  1. Verifica che le viste materializzate previste vengano effettivamente utilizzate dalla query. Per istruzioni dettagliate, consulta Monitorare l'vista materializzata materializzate.
  2. Verifica l'aggiornamento della visualizzazione materializzata.
  3. Esamina la definizione della vista materializzata e i dati a cui fa riferimento e considera tecniche per ottimizzare l'utilizzo delle viste materializzate.