Monitorizar vistas materializadas

Puedes monitorizar el uso de vistas materializadas y las tareas de actualización consultando la vista INFORMATION_SCHEMA de BigQuery. Para crear una lista de vistas materializadas, consulta Listar vistas materializadas.

Vista INFORMATION_SCHEMA de la vista materializada

Para descubrir vistas materializadas, consulta la INFORMATION_SCHEMA.TABLES vista. Para obtener las propiedades de una vista materializada, consulta la vista INFORMATION_SCHEMA.TABLE_OPTIONS.

Las vistas materializadas no se muestran en la tabla Vistas de INFORMATION_SCHEMA.VIEWS.

Monitorizar la actualización automática

En esta sección se explica cómo ver los detalles de actualización de las vistas materializadas.

Ver el estado de la última actualización

Para obtener el estado actual de las vistas materializadas, llama al método tables.get o consulta la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS.

Por ejemplo:

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

Si el valor de last_refresh_status no es NULL, significa que el último trabajo de actualización automática ha fallado. Las solicitudes de actualización manual no se reflejan aquí. Los cambios en las tablas base pueden invalidar una definición de vista materializada, lo que provoca un error durante la actualización automática. Para obtener más información, consulta Actualizaciones incrementales. Por ejemplo, si se elimina de la tabla base una columna a la que hace referencia la vista materializada, el campo last_refresh_status devuelve un error invalidQuery. Para obtener más información, consulta Mensajes de error.

Mostrar tareas de actualización automática

Para enumerar las tareas de actualización automática de vistas materializadas, llama al método jobs.list. Para obtener detalles sobre las tareas, llama al método jobs.get. También puedes consultar las INFORMATION_SCHEMA.JOBS_BY_*vistas para obtener los trabajos. Las tareas de actualización automática contienen el prefijo materialized_view_refresh en el ID de tarea y las inicia una cuenta de administrador de BigQuery.

Por ejemplo:

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;

Para monitorizar el coste de los trabajos de actualización y ajustar el intervalo de actualización automática si es necesario, consulta los campos total_bytes_processed y total_slot_ms.

Por ejemplo, si la tasa de ingestión de las tablas base es relativamente pequeña, tiene sentido actualizar la vista con menos frecuencia. Si los datos subyacentes cambian rápidamente, es recomendable actualizar con más frecuencia.

Si las tablas base ingieren datos en momentos predefinidos, como mediante una pipeline de extracción, transformación y carga (ETL) nocturna, plantéate controlar la programación de mantenimiento de la vista materializada de la siguiente manera:

  1. Inhabilita la actualización automática.

  2. Realizar una actualización manual, ya sea como parte del flujo de procesamiento de ETL o configurando una consulta programada a determinadas horas del día.

Para obtener más información sobre los precios de las vistas materializadas, consulta los precios de las vistas materializadas.

Monitorizar el uso de vistas materializadas

Para ver el uso de la vista materializada de una tarea de consulta, puedes llamar al método jobs.get o consultar la vista INFORMATION_SCHEMA.JOBS_BY_* y ver el campo materialized_view_statistics. Proporciona detalles sobre el uso de vistas materializadas por parte de la consulta, como los siguientes:

Por ejemplo:

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

Para ver el uso de una vista materializada a lo largo del tiempo, consulta las vistas INFORMATION_SCHEMA.JOBS_BY_*.

Por ejemplo, la siguiente consulta devuelve un resumen de los trabajos de consulta recientes que usan la vista materializada de destino:

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;

Solucionar problemas de consultas lentas con vistas materializadas

Si tu consulta usa vistas materializadas y se ejecuta más lentamente de lo esperado, haz lo siguiente:

  1. Verifica que la consulta esté usando las vistas materializadas que quieres. Para obtener instrucciones detalladas, consulta Monitorizar el uso de vistas materializadas.
  2. Comprueba la actualización de tu vista materializada.
  3. Revisa la definición de la vista materializada y los datos a los que hace referencia, y ten en cuenta las técnicas para optimizar el uso de las vistas materializadas.