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:
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:
- Indica si se ha usado la vista materializada.
- Si no se ha usado la vista materializada, el motivo por el que se ha rechazado.
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:
- Verifica que la consulta esté usando las vistas materializadas que quieres. Para obtener instrucciones detalladas, consulta Monitorizar el uso de vistas materializadas.
- Comprueba la actualización de tu vista materializada.
- 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.