Supervisa las vistas materializadas
Puedes supervisar el uso de las vistas materializadas y actualizar los trabajos mediante la vista INFORMATION_SCHEMA
de BigQuery. Para crear una lista de vistas materializadas, consulta Enumera vistas materializadas.
Vista materializada INFORMATION_SCHEMA
Para descubrir las vistas materializadas, consulta la vista INFORMATION_SCHEMA.TABLES
. Para recuperar las propiedades de una vista materializada, consulta la vista INFORMATION_SCHEMA.TABLE_OPTIONS
.
Las vistas materializadas no se enumeran en la tabla de vistas INFORMATION_SCHEMA.VIEWS
.
Supervisa la actualización automática
En esta sección, se muestra cómo ver los detalles de actualización de las vistas materializadas.
Consulta el estado de la última actualización
Para recuperar 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
, falló el último trabajo de actualización automática. 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 genera un error durante la actualización automática. Para obtener más información, consulta Actualizaciones incrementales. Por ejemplo, si una columna a la que hace referencia la vista materializada se descarta de la tabla base, el campo last_refresh_status
muestra un error invalidQuery
. Para obtener más información, consulta Mensajes de error.
Enumera trabajos de actualización automática
Para mostrar una lista de los trabajos de actualización automática de vistas materializadas, llama al método jobs.list
. Para recuperar detalles sobre los trabajos, llama al método jobs.get
. También puedes consultar las vistas INFORMATION_SCHEMA.JOBS_BY_*
para obtener los trabajos. Los trabajos de actualización automática contienen el prefijo materialized_view_refresh
en el ID de tarea, y una cuenta de administrador de BigQuery los inicia.
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 supervisar el costo 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 transferencia de las tablas base es relativamente baja, tiene sentido actualizar la vista con menos frecuencia. Si los datos subyacentes cambian rápidamente, tiene sentido actualizar con más frecuencia.
Si las tablas base transfieren datos en períodos predefinidos, como una canalización nocturna de extracción, transformación y carga (ETL), considera controlar el programa de mantenimiento de vistas materializadas de la siguiente manera:
Realiza una actualización manual, ya sea como parte de la canalización de ETL o mediante la configuración de una consulta programada en momentos específicos del día.
Para obtener más información sobre los precios de las vistas materializadas, consulta Precios de vistas materializadas.
Supervisa el uso de vistas materializadas
Para ver el uso de la vista materializada de un trabajo 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 las vistas materializadas por la consulta, incluidos los siguientes detalles:
- Si se usó la vista materializada.
- Si la vista materializada no se usó y el motivo del rechazo.
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 en el tiempo, consulta las vistas INFORMATION_SCHEMA.JOBS_BY_*
.
Por ejemplo, en la siguiente consulta, se muestra 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;
Soluciona problemas de consultas lentas con vistas materializadas
Si tu consulta usa vistas materializadas y se ejecuta más lento de lo esperado, haz lo siguiente:
- Verifica que la consulta esté usando las vistas materializadas previstas. Para obtener instrucciones detalladas, consulta Supervisa el uso de vistas materializadas.
- Verifica la actualización de tu vista materializada.
- Revisa la definición de la vista materializada y los datos a los que hace referencia, y considera técnicas para optimizar el uso de vistas materializadas.