Monitorar visualizações materializadas

Monitore jobs de visualização materializada e atualize jobs na visualização INFORMATION_SCHEMA do BigQuery. Para criar uma lista de visualizações materializadas, consulte Listar visualizações materializadas.

Visualização materializada INFORMATION_SCHEMA

Para descobrir visualizações materializadas, consulte a visualização INFORMATION_SCHEMA.TABLES. Para recuperar as properties de uma visualização materializada, consulte a visualização INFORMATION_SCHEMA.TABLE_OPTIONS.

As visualizações materializadas não estão listadas na tabela de visualizações INFORMATION_SCHEMA.VIEWS.

Monitorar atualização automática

Nesta seção, mostramos como visualizar detalhes de atualização para visualizações materializadas.

Ver último status de atualização

Para recuperar o status atual de visualizações materializadas, chame o método tables.get ou consulte a visualização INFORMATION_SCHEMA.MATERIALIZED_VIEWS.

Exemplo:

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

Se o valor de last_refresh_status não for NULL, o último job de atualização automática falhou. As solicitações de atualização manual não são refletidas aqui. As alterações nas tabelas base podem invalidar uma definição de visualização materializada, resultando em um erro durante a atualização automática. Veja mais informações em Atualizações incrementais. Por exemplo, se uma coluna referenciada pela visualização materializada for removida da tabela base, o campo last_refresh_status retornará um erro invalidQuery. Para mais informações, consulte Mensagens de erro.

Listar jobs de atualização automática

Para listar jobs de atualização automática da visualização materializada, chame o método jobs.list. Para recuperar detalhes sobre os jobs, chame o método jobs.get. Também é possível consultar as visualizações INFORMATION_SCHEMA.JOBS_BY_* para acessar os jobs. Os jobs de atualização automática contêm o prefixo materialized_view_refresh no código da tarefa e são iniciados por uma conta de administrador do BigQuery.

Exemplo:

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 monitorar o custo dos jobs de atualização e ajustar o intervalo de atualização automática, se necessário, veja os campos total_bytes_processed e total_slot_ms.

Por exemplo, se a taxa de ingestão na tabela base for relativamente pequena, convém atualizar a visualização com menos frequência. Se os dados subjacentes forem alterados rapidamente, convém atualizar com mais frequência.

Se as tabelas base ingerirem dados em pontos predefinidos no tempo, por exemplo, usando um pipeline noturno de extração, transformação e carregamento (ETL, na sigla em inglês), considere assumir o controle do cronograma de manutenção da visualização materializada da seguinte maneira:

  1. Desativar atualização automática.

  2. Executar uma atualização manual como parte do pipeline de ETL ou configurar uma consulta programada em horários específicos do dia.

Para saber mais sobre preços de visualizações materializadas, consulte preços de visualizações materializadas.

Monitorar uso de visualizações materializadas

Para ver o uso da visualização materializada de um job de consulta, chame o método jobs.get ou consulte a visualização INFORMATION_SCHEMA.JOBS_BY_* e veja o campo materialized_view_statistics. Ele mostra detalhes sobre o uso de visualizações materializadas pela consulta, incluindo os seguintes detalhes:

  • Se a visualização materializada foi usada.
  • Se a visualização materializada não foi usada e o motivo da rejeição.

Exemplo:

SELECT
  job_id, materialized_view_statistics
FROM
  region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  job_id = '';

Para ver o uso de uma visualização materializada ao longo do tempo, consulte as visualizações INFORMATION_SCHEMA.JOBS_BY_*.

Por exemplo, a consulta a seguir retorna um resumo dos jobs de consulta recentes que usam a visualização 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;