Introdução às visualizações materializadas

As visualizações materializadas são pré-calculadas e armazenam periodicamente os resultados de uma consulta SQL. As visualizações materializadas podem reduzir o tempo total de processamento e as taxas relacionadas à consulta armazenando os resultados da consulta e diminuindo a quantidade de dados a serem verificados para cada consulta. O BigQuery verifica se as visualizações materializadas fornecem dados atualizados calculando atualizações em segundo plano. Esse processo é realizado de forma incremental usando apenas os dados alterados na tabela de base, sujeito a um número de considerações. As visualizações materializadas podem ser consultadas diretamente ou usadas pelo BigQuery para otimizar consultas nas tabelas de base.

Confira as principais características das visualizações materializadas:

  • Manutenção zero. As visualizações materializadas são pré-computadas em segundo plano quando as tabelas base são alteradas. Todas as alterações de dados incrementais das tabelas base são automaticamente adicionadas às visualizações materializadas, sem a necessidade de uma ação do usuário.
  • Dados atuais. Visualizações materializadas retornam dados recentes. Se as alterações nas tabelas base puderem invalidar a visualização materializada, os dados serão lidos diretamente das tabelas base. Se as alterações nas tabelas base não invalidarem a visualização materializada, o restante dos dados será lido a partir da visualização materializada e apenas as alterações serão lidas das tabelas base.
  • Ajuste inteligente. Se alguma parte de uma consulta na tabela de base puder ser resolvida consultando a visualização materializada, o BigQuery redirecionará a consulta para usar a visualização materializada, melhorando o desempenho e a eficiência.

Comparação com visualizações lógicas

A tabela a seguir resume as semelhanças e diferenças entre as visualizações lógicas e materializadas do BigQuery.

Componente Visualizações lógicas Visualizações materializadas
Otimizar a computação Não Sim
Suporte a consulta SQL Todos Limitado1
Particionamento e clustering N/A Sim
Atualização incremental Não Sim
Armazenamento adicional Não Sim
Reescrever consulta Não Sim
Custos de manutenção Não Sim
Inatividade dos dados Nunca Opcional 2

1 A opção --allow_non_incremental_definition oferece suporte a um intervalo maior de consultas SQL para criar visualizações materializadas. Para uma lista de visualizações materializadas compatíveis, consulte Limitações de consulta.

2 A opção --max_staleness oferece alto desempenho consistente com custos controlados ao processar grandes conjuntos de dados que mudam com frequência.

Casos de uso

As visualizações materializadas do BigQuery podem otimizar consultas com alto custo computacional e pequenos resultados de conjunto de dados. Os processos que se beneficiam das visualizações materializadas incluem operações de processamento analítico on-line (OLAP, na sigla em inglês) que exigem processamento significativo com consultas previsíveis e repetidas, como aquelas de processos de extração, transformação, carregamento (ETL) ou de pipelines de business intelligence (BI).

Os casos de uso a seguir destacam o valor das visualizações materializadas. As visualizações materializadas podem melhorar o desempenho das consultas se você exigir com frequência o seguinte:

  • Pré-agregar dados. Agregação de dados de streaming.
  • Pré-filtrar dados. Execute consultas que leiam apenas um determinado subconjunto da tabela.
  • Pré-mesclar dados. Mesclagens de consulta, especialmente entre tabelas grandes e pequenas.
  • Reclustering de dados. Execute consultas que se beneficiariam de um esquema de clustering diferente das tabelas base.

Ajuste inteligente

As visualizações materializadas podem ser usadas para melhorar de forma transparente o desempenho das consultas sem modificá-las. É possível usar uma visualização materializada para otimizar conjuntos de consultas com padrões comuns, como as geradas por uma ferramenta de BI. Para mais informações, consulte Usar visualizações materializadas.

Visualizações materializadas autorizadas

É possível criar uma visualização materializada autorizada para compartilhar um subconjunto de dados de um conjunto de dados de origem com uma visualização em um conjunto de dados secundário. Em seguida, você pode compartilhar essa visualização com usuários e grupos específicos (principais) que podem acessar os dados compartilhados. Os principais podem consultar os dados fornecidos em uma visualização, mas não podem acessar o conjunto de dados de origem diretamente.

As visualizações autorizadas e materializadas autorizadas são autorizadas da mesma forma. Para mais detalhes, consulte Visualizações autorizadas.

Interação com outros recursos do BigQuery

Os seguintes recursos do BigQuery funcionam de forma transparente com visualizações materializadas:

  • Explicação do plano de consulta: o plano de consulta reflete quais visualizações materializadas são verificadas (se houver) e mostra quantos bytes são lidos nas visualizações materializadas e nas tabelas base combinadas.

  • Cache de consulta: os resultados de uma consulta reescrita pelo BigQuery usando uma visualização materializada podem ser armazenados em cache de acordo com as limitações padrão (uso de funções determinísticas, streaming na tabela base etc).

  • Restrição de custo: se tiver definido um valor para o máximo de bytes cobrados e uma consulta ler um número de bytes além do limite, ela falhará sem gerar uma cobrança, seja usando visualizações materializadas, a tabela base ou ambas.

  • Estimativa de custo usando simulação: uma simulação repete a lógica de reescrever a consulta usando visualizações materializadas disponíveis e fornece uma estimativa de custo. É possível usar esse recurso como forma de testar se uma consulta específica usa visualizações materializadas.

Tabelas de metadados ativadas por cache do BigLake

Visualizações materializadas em tabelas de metadados ativadas por cache do BigLake podem referenciar dados estruturados armazenados no Cloud Storage e no Amazon Simple Storage Service (Amazon S3). Essas visualizações materializadas funcionam como as visualizações materializadas em tabelas de armazenamento gerenciadas pelo BigQuery, incluindo os benefícios da atualização automática e do ajuste inteligente. Outros benefícios incluem pré-agregar, pré-filtrar e pré-mesclar dados armazenados fora do BigQuery. As visualizações materializadas nas tabelas do BigLake são armazenadas e têm todas as características do armazenamento gerenciado do BigQuery.

Quando você cria uma visualização materializada em uma tabela do BigLake no Amazon S3, os dados nessa visualização não ficam disponíveis para mesclagens com dados do BigQuery. Para disponibilizar os dados do Amazon S3 em uma visualização materializada para mesclagens, crie uma réplica da visualização materializada. Só é possível criar réplicas de visualizações materializadas em visualizações materializadas autorizadas.

Limitações

  • Podem ser aplicados limites nas referências da tabela base e outras restrições. Para mais informações sobre limites de visualização materializada, consulte Cotas e limites.
  • Os dados de uma visualização materializada não podem ser atualizados ou manipulados diretamente usando operações como COPY, EXPORT, LOAD, WRITE ou instruções de linguagem de manipulação de dados (DML).
  • Não é possível substituir uma visualização materializada por uma visualização materializada com o mesmo nome.
  • O SQL da visualização não pode ser atualizado depois que a visualização materializada é criada.
  • Uma visualização materializada precisa residir na mesma organização da tabela base ou no mesmo projeto, se o projeto não pertencer a uma organização.
  • As visualizações materializadas são compatíveis com uma sintaxe SQL restrita e um conjunto limitado de funções de agregação. Para mais informações, consulte Visualizações materializadas compatíveis.
  • As visualizações materializadas não podem ser aninhadas em outras visualizações materializadas.
  • As visualizações materializadas não podem consultar tabelas externas ou curingas, visualizações lógicas1 ou snapshots.
  • Somente o dialeto GoogleSQL é compatível com visualizações materializadas.
  • É possível definir as descrições de visualizações materializadas, mas não para colunas individuais.
  • Se você excluir uma tabela base sem excluir primeiro a visualização materializada, as consultas e atualizações da visualização materializada falharão. Se você recriar a tabela base, também precisará recriar a visualização materializada.
  • Se uma visualização materializada tiver uma tabela base habilitada para captura de dados de mudança, ela não poderá ser referenciada na mesma consulta que a visualização materializada.
  • Somente visualizações materializadas não incrementais podem ter tabelas base de conjuntos de dados externos do Spanner. Se a última atualização de uma visualização materializada não incremental ocorreu fora do intervalo max_staleness, a consulta lê as tabelas do conjunto de dados externo do Spanner. Para saber mais sobre tabelas de conjuntos de dados externos do Spanner, consulte Criar visualizações materializadas em conjuntos de dados externos do Spanner.

1O suporte à referência de visualização lógica está em pré-lançamento. Para mais informações, consulte Referência a visualizações lógicas.

Limitações de visualizações materializadas em tabelas do BigLake

  • O particionamento da visualização materializada não é compatível. As tabelas base podem usar o particionamento do Hive, mas o armazenamento de visualização materializada não pode ser particionado em tabelas do BigLake. Isso significa que qualquer exclusão em uma tabela base causa uma atualização completa da visualização materializada. Para mais detalhes, consulte Atualizações incrementais.
  • O valor de opção -max_staleness da visualização materializada precisa ser maior que o valor da tabela base do BigLake.
  • As mesclagens entre as tabelas gerenciadas do BigQuery e as tabelas do BigLake não são aceitas em uma única definição de visualização materializada.
  • O BigQuery BI Engine não oferece suporte à aceleração de visualizações materializadas em tabelas do BigLake.

Preços de visualizações materializadas

Os custos são associados aos seguintes aspectos das visualizações materializadas:

  • Como consultar visualizações materializadas
  • Como manter visualizações materializadas, como quando são atualizadas. O custo da atualização automática é cobrado no projeto em que a visualização reside. O custo da atualização manual é cobrado no projeto em que o job de atualização manual é executado. Para mais informações sobre como controlar o custo de manutenção, consulte Manutenção do job de atualização.
  • Como armazenar tabelas de visualização materializadas.
Componente Preços sob demanda Preços baseados em capacidade
Consulta Bytes processados por visualizações materializadas e quaisquer partes necessárias das tabelas base.1 Slots são consumidos durante o tempo de consulta.
Manutenção Bytes processados durante o tempo de atualização. Slots são consumidos durante o tempo de atualização.
Armazenamento Bytes armazenados em visualizações materializadas. Bytes armazenados em visualizações materializadas.

1 Sempre que possível, o BigQuery lê apenas as alterações desde a última vez em que a visualização foi atualizada. Veja mais informações em Atualizações incrementais.

Detalhes do custo de armazenamento

Para valores AVG, ARRAY_AGG e APPROX_COUNT_DISTINCT agregados em uma visualização materializada, o valor final não é armazenado diretamente. Em vez disso, o BigQuery armazena internamente uma visualização materializada como um rascunho intermediário, que é usado para produzir o valor final.

Por exemplo, considere uma visualização 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

Enquanto a coluna avg_paid é renderizada para o usuário como NUMERIC ou FLOAT64, internamente ela é armazenada como BYTES, com seu conteúdo como um rascunho intermediário em formato reservado. Para o cálculo do tamanho dos dados, a coluna é tratada como BYTES.

A seguir