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:

  1. Inhabilita la actualización automática.

  2. 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:

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:

  1. Verifica que la consulta esté usando las vistas materializadas previstas. Para obtener instrucciones detalladas, consulta Supervisa el uso de vistas materializadas.
  2. Verifica 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 considera técnicas para optimizar el uso de vistas materializadas.