Introdução às visualizações materializadas
As visualizações materializadas do BigQuery são tabelas pré-computadas que otimizam a performance da consulta e reduzem os custos de execução de consultas previsíveis e executadas com frequência. Ao armazenar periodicamente os resultados de uma consulta, as visualizações materializadas resolvem a latência da consulta e os altos custos de verificação ao consultar repetidamente grandes conjuntos de dados com padrões de agregação previsíveis. Ao mesclar automaticamente dados pré-computados com mudanças recentes nas tabelas base, as visualizações materializadas garantem resultados de consulta atualizados sem exigir pipelines de dados manuais.
Este documento é destinado a engenheiros de dados, administradores de banco de dados e desenvolvedores de Business Intelligence (BI) que projetam pipelines de análise de alta performance. Para implementar visualizações materializadas, é necessário conhecer as estruturas de conjuntos de dados do BigQuery, as funções de agregação do GoogleSQL e as estruturas de custo de consulta.
Benefícios das visualizações materializadas
Os casos de uso a seguir destacam o valor das visualizações materializadas:
- Pré-processar dados. Melhore a performance da consulta preparando agregações, filtros, mesclagens e clusters.
- Aceleração do painel. Capacite ferramentas de BI, como o Looker, que consultam com frequência as mesmas métricas agregadas, por exemplo, usuários ativos diários.
- Análise em tempo real em grandes streams. Pode fornecer respostas mais rápidas em tabelas que recebem dados de streaming de alta velocidade.
- Gerenciamento de custos. Reduza o custo de consultas repetitivas e caras em grandes conjuntos de dados.
Principais características
As principais características das visualizações materializadas incluem o seguinte:
- Manutenção zero. O BigQuery pré-computa visualizações materializadas em segundo plano quando as tabelas base são alteradas. O BigQuery adiciona automaticamente mudanças de dados incrementais das tabelas base às visualizações materializadas, sem a necessidade de uma ação do usuário.
Dados atuais. Visualizações materializadas retornam dados recentes. Se as mudanças nas tabelas base puderem invalidar a visualização materializada, o BigQuery vai ler os dados diretamente das tabelas base. Se as mudanças nas tabelas base não invalidarem a visualização materializada, o BigQuery vai ler o restante dos dados da visualização materializada e ler apenas as mudanças das tabelas base.
O diagrama a seguir mostra a lógica usada para mesclar mudanças de dados em tempo real:
Ajuste inteligente. Se alguma parte de uma consulta em uma tabela base puder ser resolvida consultando a visualização materializada, o BigQuery vai redirecionar a consulta para usar a visualização materializada, melhorando a performance e a eficiência. Para informações sobre como e quando o ajuste inteligente pode melhorar consultas, consulte Usar visualizações materializadas.
O diagrama a seguir mostra o fluxo de trabalho de redirecionamento de consultas do ajuste inteligente:
Tipos de visualizações materializadas
Há dois tipos básicos de visualizações materializadas:
- As visualizações materializadas incrementais oferecem suporte a um conjunto limitado de recursos. Para saber mais sobre a sintaxe SQL compatível com visualizações materializadas, consulte Criar visualizações materializadas. Somente as visualizações materializadas incrementais podem aproveitar o ajuste inteligente.
- As visualizações materializadas não incrementais oferecem suporte à maioria das sintaxes que as visualizações materializadas incrementais não oferecem.
Ao criar visualizações materializadas, por padrão, o BigQuery só permite criar visualizações com base em consultas incrementais. Para criar uma visualização não incremental, especifique allow_non_incremental_definition = true na definição da visualização materializada.
O melhor tipo de visualização materializada a ser usado depende da sua situação. A tabela a seguir compara os recursos de visualizações materializadas incrementais e não incrementais:
| Categoria | Incremental | Não incremental |
|---|---|---|
| Compatibilidade de consulta | Limitado | A maioria das consultas |
| Custo de manutenção | Pode reduzir o custo de consultas usadas com frequência. Para saber como as visualizações materializadas são atualizadas, consulte Atualizações incrementais. | Cada atualização executa a consulta completa. |
| Suporte a ajuste inteligente | Oferecido para a maioria das consultas de visualizações. | Não |
| Resultados sempre atualizados | Oferecido. As visualizações incrementais retornam resultados de consulta atualizados, mesmo quando as tabelas base foram alteradas desde a última atualização. | Não |
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). 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 as visualizações materializadas autorizadas são autorizadas da mesma maneira. 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 mostra quais visualizações materializadas são verificadas (se houver) e 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 você especificar o máximo de bytes cobrados e uma consulta ler dados além desse limite, a consulta vai falhar sem incorrer em cobrança, seja por uso de visualizações materializadas, das tabelas base ou de 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.
Replicação de dados entre regiões. As visualizações materializadas podem ser criadas em tabelas do BigQuery que têm a replicação entre regiões ativada, mas apenas na região principal. Se você usar a região secundária, poderá encontrar a seguinte mensagem de erro:
The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.
Além desses recursos, é possível criar visualizações materializadas em tabelas com recursos específicos, conforme descrito nas seções a seguir.
Tabelas com captura de dados alterados ativa
É possível criar visualizações materializadas em tabelas com captura de dados alterados (CDC, na sigla em inglês) ativa
, um padrão usado para ingerir continuamente mudanças de banco de dados ou tabelas. Essas visualizações materializadas funcionam como visualizações materializadas em tabelas do BigQuery, incluindo os benefícios da atualização automática. As visualizações materializadas não podem executar
consultas de mesclagem de tempo de execução,
portanto, é necessário configurar visualizações materializadas com um max_staleness suficiente para
evitar jobs de mesclagem de tempo de execução. Para mais informações, consulte
Limitações de visualizações materializadas em tabelas com captura de dados alterados ativa.
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 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 sobre visualizações materializadas autorizadas.
Limitações
As visualizações materializadas do BigQuery estão sujeitas às limitações funcionais e operacionais descritas nas seções a seguir.
Limitações de SQL e sintaxe
- Dialeto. Somente o dialeto GoogleSQL é compatível.
- Sintaxe do SQL. 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 Suporte a consultas de visualizações materializadas.
- Variáveis de sistema. As visualizações materializadas não oferecem suporte a variáveis de sistema, por exemplo, a variável de sistema
@@session_id. - Tipos de dados parametrizados. As visualizações materializadas não podem herdar ou definir explicitamente tipos de dados parametrizados, como
STRING(n), porque os tipos de dados parametrizados só são compatíveis com colunas de tabela base e variáveis de script. - Descrições de colunas. É possível definir descrições para visualizações materializadas, mas não para colunas individuais na visualização materializada.
- Modificações de consulta. Não é possível atualizar a consulta de uma visualização materializada depois de criá-la.
- Modificações de dados. Não é possível atualizar ou manipular diretamente dados de visualização materializada usando operações como
COPY,EXPORT,LOAD,WRITEou instruções de linguagem de manipulação de dados (DML).
Limitações de tabela base e aninhamento
- Aninhamento. Não é possível aninhar visualizações materializadas em outras visualizações materializadas.
- Tipos de origem. As visualizações materializadas não podem consultar tabelas externas (exceto tabelas do BigLake), tabelas curinga, visualizações lógicas1 ou snapshots.
- Comportamento de exclusão. 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.
- Conjuntos de dados externos do Spanner. 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 vai ler as tabelas de conjuntos de dados externos do Spanner. Para mais detalhes, consulte Criar visualizações materializadas em conjuntos de dados externos do Spanner. - Armazenamento em cache com o Spanner. O BigQuery não armazena em cache os resultados da consulta se ela for executada em visualizações materializadas não incrementais que referenciam tabelas de conjuntos de dados externos do Spanner.
Limitações de escopo e regionais
- Limite da organização. Uma visualização materializada precisa residir no mesmo projeto ou bloco de organização das tabelas base.
- Configurações de inatividade. O valor da opção
max_stalenessprecisa estar entre 30 minutos e 3 dias, inclusive. - Consultas de recursos. Podem ser aplicados limites nas referências da tabela base e outras restrições. Para mais informações, consulte Cotas e limites.
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 com CDC ativo
As visualizações materializadas com tabelas base de captura de dados alterados (CDC) ativas têm as seguintes limitações:
- Se uma visualização materializada tiver uma tabela base com captura de dados alterados ativa, não será possível referenciar essa tabela em uma consulta que também referencie a visualização materializada.
- Ao criar uma visualização materializada em uma tabela com captura de dados alterados ativa, a visualização materializada não pode executar os jobs de mesclagem de tempo de execução da tabela de CDC subjacente.
Defina o valor
max_stalenessda visualização materializada como pelo menos o dobro do valormax_stalenessde tabela base. As consultas em uma visualização materializada falham se a versão atual da tabela de CDC subjacente for mais antiga que amax_stalenessda visualização materializada. - Não é possível usar o ajuste inteligente para visualizações materializadas em tabelas com captura de dados alterados ativa.
Limitações de visualizações materializadas em tabelas do BigLake
As visualizações materializadas em tabelas do BigLake têm as seguintes limitações:
- Não é possível particionar a visualização materializada. As tabelas base podem usar o particionamento do Apache Hive, mas não é possível particionar o armazenamento de visualização materializada 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_stalenessda visualização materializada precisa ser maior que o valor da tabela base do BigLake. - Não é possível realizar uma mesclagem entre tabelas gerenciadas do BigQuery e tabelas do BigLake em uma única definição de visualização materializada.
- O BigQuery BI Engine (um serviço de análise rápido na memória) não oferece suporte à aceleração de visualizações materializadas em tabelas do BigLake.
Preços de visualizações materializadas
As visualizações materializadas incorrem em custos das seguintes maneiras:
- 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.
A tabela a seguir descreve os componentes de preços para visualizações 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
A maneira como o BigQuery armazena determinados valores agregados afeta o cálculo do tamanho do armazenamento. Para valores agregados AVG, ARRAY_AGG e APPROX_COUNT_DISTINCT 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 aparece como NUMERIC ou FLOAT64, internamente ela é armazenada como BYTES, com seu conteúdo como um rascunho intermediário em um formato reservado. Para o cálculo do tamanho dos dados,
a coluna é tratada como BYTES.
Fluxo de trabalho de introdução
A configuração de visualizações materializadas envolve o seguinte fluxo de trabalho:
- Projetar e verificar a consulta. Crie sua consulta de agregação usando as diretrizes do GoogleSQL.
- Criar visualização materializada. Execute a
CREATE MATERIALIZED VIEWinstrução usando o Google Cloud console, a ferramenta de linha de comando bq ou a API BigQuery. - Permitir a execução do ajuste inteligente. O BigQuery redireciona automaticamente as consultas na tabela base para usar a visualização materializada. Nenhuma consulta ou aplicativo precisa reescrever destinos.
Para começar a criar, consulte Criar visualizações materializadas.
A seguir
- Visão geral das visualizações lógicas e materializadas
- Criar visualizações materializadas
- Usar visualizações materializadas
- Gerenciar visualizações materializadas
- Resolver problemas de visualizações materializadas