Introdução às vistas materializadas

As vistas materializadas são vistas pré-calculadas que armazenam periodicamente os resultados de uma consulta SQL. As vistas materializadas podem reduzir o tempo de processamento total e os custos relacionados com as consultas, armazenando os resultados das consultas, o que reduz a quantidade de dados a analisar para cada consulta. O BigQuery verifica se as vistas materializadas fornecem dados atualizados calculando as atualizações em segundo plano. Este processo é realizado incrementalmente usando apenas os dados alterados na tabela base, sujeito a um número de considerações. As vistas materializadas podem ser consultadas diretamente ou usadas pelo BigQuery para otimizar as consultas às respetivas tabelas base.

As principais caraterísticas das vistas materializadas incluem o seguinte:

  • Manutenção zero. As vistas materializadas são pré-calculadas em segundo plano quando as tabelas base são alteradas. Todas as alterações incrementais de dados das tabelas base são adicionadas automaticamente às vistas materializadas, sem que seja necessária qualquer ação do utilizador.
  • Dados atualizados. As vistas materializadas devolvem dados atualizados. Se as alterações às tabelas base puderem invalidar a vista materializada, os dados são lidos diretamente das tabelas base. Se as alterações às tabelas base não invalidarem a vista materializada, o resto dos dados é lido a partir da vista materializada e apenas as alterações são lidas a partir das tabelas base.
  • Ajuste inteligente. Se qualquer parte de uma consulta à tabela base puder ser resolvida através da consulta à vista materializada, o BigQuery redireciona a consulta para usar a vista materializada para um melhor desempenho e eficiência.

Compare com visualizações lógicas

A tabela seguinte resume as semelhanças e as diferenças entre as vistas lógicas e as vistas materializadas do BigQuery.

Componente Visualizações lógicas Vistas materializadas
Otimize a computação Não Sim
Suporte de consultas SQL Tudo Limitada1
Partição e clustering N/A Sim
Atualização incremental Não Sim
Armazenamento adicional Não Sim
Reescrita de consultas Não Sim
Custos de manutenção Não Sim
Obsolecência dos dados Nunca Opcional 2

1 A opção --allow_non_incremental_definition suporta um intervalo expandido de consultas SQL para criar vistas materializadas. Para ver uma lista das vistas materializadas suportadas, consulte o artigo Limitações de consultas.

2 A opção --max_staleness oferece um desempenho consistentemente elevado com custos controlados quando processa conjuntos de dados grandes e que mudam com frequência.

Exemplos de utilização

As vistas materializadas podem otimizar consultas com um custo de computação elevado e resultados de conjuntos de dados pequenos. Os processos que beneficiam das vistas materializadas incluem operações de processamento analítico online (OLAP) que requerem um processamento significativo com consultas previsíveis e repetidas, como as dos processos de extração, transformação e carregamento (ETL) ou pipelines de inteligência empresarial (BI).

Os seguintes exemplos de utilização realçam o valor das vistas materializadas. As vistas materializadas podem melhorar o desempenho das consultas se precisar frequentemente do seguinte:

  • Pré-agregue os dados. Agregação de dados de streaming.
  • Pré-filtrar dados. Executar consultas que apenas leiam um subconjunto específico da tabela.
  • Dados pré-junção. Junta consultas, especialmente entre tabelas grandes e pequenas.
  • Reagrupe os dados. Executar consultas que beneficiariam de um esquema de agrupamento diferente das tabelas base.

Ajuste inteligente

As vistas materializadas podem ser usadas para melhorar de forma transparente o desempenho das consultas sem as modificar. Pode usar uma vista materializada para otimizar conjuntos de consultas com padrões comuns, como as geradas por uma ferramenta de Business Intelligence. Para mais informações, consulte o artigo Use vistas materializadas.

Vistas materializadas autorizadas

Pode criar uma vista materializada autorizada para partilhar um subconjunto de dados de um conjunto de dados de origem para uma vista num conjunto de dados secundário. Em seguida, pode partilhar esta vista com utilizadores e grupos específicos (diretores) que podem ver os dados que partilha. Os principais podem consultar os dados que fornece numa vista, mas não podem aceder diretamente ao conjunto de dados de origem.

As vistas autorizadas e as vistas materializadas autorizadas são autorizadas da mesma forma. Para ver detalhes, consulte o artigo Vistas autorizadas.

Interação com outras funcionalidades do BigQuery

As seguintes funcionalidades do BigQuery funcionam de forma transparente com as visualizações materializadas:

  • Explicação do plano de consulta: o plano de consulta reflete as vistas materializadas que são analisadas (se existirem) e mostra quantos bytes são lidos das vistas materializadas e das tabelas base combinadas.

  • Colocação em cache de consultas: os resultados de uma consulta que o BigQuery reescreve através de uma vista materializada podem ser colocados em cache, sujeitos às limitações habituais (utilização de funções determinísticas, sem streaming para as tabelas base, etc.).

  • Restrição de custos: se tiver definido um valor para o número máximo de bytes faturados, e uma consulta ler um número de bytes superior ao limite, a consulta falha sem incorrer numa cobrança, quer a consulta use vistas materializadas, as tabelas base ou ambas.

  • Estimativa de custos com a execução de ensaio: Uma execução de ensaio repete a lógica de reescrita de consultas usando as vistas materializadas disponíveis e fornece uma estimativa de custos. Pode usar esta funcionalidade como forma de testar se uma consulta específica usa alguma vista materializada.

Tabelas com cache de metadados do BigLake ativada

As vistas materializadas sobre tabelas com a cache de metadados do BigLake ativada podem fazer referência a dados estruturados armazenados no Cloud Storage e no Amazon Simple Storage Service (Amazon S3). Estas vistas materializadas funcionam como vistas materializadas sobre tabelas de armazenamento geridas pelo BigQuery, incluindo as vantagens da atualização automática e da otimização inteligente. Outras vantagens incluem a pré-agregação, a pré-filtragem e a pré-junção de dados armazenados fora do BigQuery. As vistas materializadas sobre tabelas do BigLake são armazenadas e têm todas as caraterísticas do armazenamento gerido do BigQuery.

Quando cria uma vista materializada numa tabela do BigLake do Amazon S3, os dados na vista materializada não estão disponíveis para associações com dados do BigQuery. Para disponibilizar os dados do Amazon S3 numa vista materializada para associações, crie uma réplica da vista materializada. Só pode criar réplicas de vistas materializadas sobre vistas materializadas autorizadas.

Limitações

  • Podem aplicar-se limites nas referências de tabelas base e outras restrições. Para mais informações sobre os limites de vistas materializadas, consulte o artigo Quotas e limites.
  • Não é possível atualizar nem manipular diretamente os dados de uma vista materializada através de operações como COPY, EXPORT, LOAD, WRITE ou declarações de linguagem de manipulação de dados (DML).
  • Não pode substituir uma vista materializada existente por uma vista materializada com o mesmo nome.
  • Não é possível atualizar o SQL da vista após a criação da vista materializada.
  • Uma vista materializada tem de residir na mesma organização que as respetivas tabelas base ou no mesmo projeto se o projeto não pertencer a uma organização.
  • As vistas materializadas usam uma sintaxe SQL restrita e um conjunto limitado de funções de agregação. Para mais informações, consulte o artigo Vistas materializadas compatíveis.
  • Não é possível aninhar visualizações de propriedades materializadas noutras visualizações de propriedades materializadas.
  • As vistas materializadas não podem consultar tabelas externas ou com carateres universais, vistas lógicas1 nem instantâneos.
  • Apenas o dialeto GoogleSQL é suportado para vistas materializadas.
  • Pode definir descrições para vistas materializadas, mas não pode definir descrições para as colunas individuais na vista materializada.
  • Se eliminar uma tabela base sem eliminar primeiro a vista materializada, as consultas e as atualizações da vista materializada falham. Se recriar a tabela base, também tem de recriar a vista materializada.
  • Se uma vista materializada tiver uma tabela base com captura de dados de alterações ativada, não é possível fazer referência a essa tabela na mesma consulta que a vista materializada.

1O suporte de referência da vista lógica está em pré-visualização. Para mais informações, consulte o artigo Referencie vistas lógicas.

Limitações das vistas materializadas sobre tabelas do BigLake

  • A partição da vista materializada não é suportada. As tabelas base podem usar a partição do Hive, mas o armazenamento da vista materializada não pode ser particionado em tabelas do BigLake. Isto significa que qualquer eliminação numa tabela base provoca uma atualização completa da vista materializada. Para mais detalhes, consulte o artigo Atualizações incrementais.
  • O valor da opção -max_staleness da vista materializada tem de ser superior ao da tabela base do BigLake.
  • As junções entre tabelas geridas do BigQuery e tabelas do BigLake não são suportadas numa única definição de vista materializada.
  • O BigQuery BI Engine não suporta a aceleração de visualizações materializadas em tabelas do BigLake.

Preços das vistas materializadas

Os custos estão associados aos seguintes aspetos das vistas materializadas:

  • Consultar vistas materializadas.
  • Manutenção de vistas materializadas, como quando as vistas materializadas são atualizadas. O custo da atualização automática é faturado ao projeto onde a vista reside. O custo da atualização manual é faturado ao projeto no qual a tarefa de atualização manual é executada. Para mais informações sobre o controlo do custo de manutenção, consulte o artigo Atualize a manutenção de tarefas.
  • Armazenamento de tabelas de vistas materializadas.
Componente Preços a pedido Preços baseados na capacidade
Consultar Bytes processados por vistas materializadas e quaisquer partes necessárias das tabelas de base.1 Os slots são consumidos durante o tempo de consulta.
Manutenção Bytes processados durante o tempo de atualização. Os slots são consumidos durante o tempo de atualização.
Armazenamento Bytes armazenados em vistas materializadas. Bytes armazenados em vistas materializadas.

1 Sempre que possível, o BigQuery lê apenas as alterações desde a última atualização da vista. Para mais informações, consulte o artigo Atualizações incrementais.

Detalhes do custo de armazenamento

Para AVG, ARRAY_AGG e APPROX_COUNT_DISTINCT, os valores agregados numa vista materializada, o valor final não é armazenado diretamente. Em alternativa, o BigQuery armazena internamente uma vista materializada como um esboço intermédio, que é usado para produzir o valor final.

Por exemplo, considere uma vista materializada criada com o seguinte comando:

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT date, AVG(net_paid) AS avg_paid
FROM project-id.my_dataset.my_base_table
GROUP BY date

Embora a coluna avg_paid seja renderizada como NUMERIC ou FLOAT64 para o utilizador, internamente, é armazenada como BYTES, com o respetivo conteúdo a ser um esboço intermédio num formato proprietário. Para o cálculo do tamanho dos dados, a coluna é tratada como BYTES.

O que se segue?