Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Otimização de Desempenho de Consultas | Aplicações Avançadas do BigQuery e Otimização
Fundamentos do BigQuery

bookOtimização de Desempenho de Consultas

Deslize para mostrar o menu

Compreenda as views materializadas no BigQuery, um recurso avançado para otimizar o desempenho de consultas e controlar custos. As views materializadas armazenam resultados de consultas pré-computados, tornando-as ideais para dashboards e relatórios executados com frequência, mas que não exigem atualizações em tempo real.

O que é uma View Materializada

Uma view materializada armazena o resultado de uma consulta como uma tabela física:

  • Atualiza-se automaticamente com base nas alterações dos dados subjacentes;
  • Os intervalos de atualização podem ser configurados, como a cada 60 minutos;
  • Consultas sobre uma view materializada são mais rápidas e econômicas do que consultar a tabela base.

Por que Utilizar Views Materializadas

As views materializadas oferecem diversos benefícios importantes:

  • Melhoria de desempenho ao evitar cálculos repetidos;
  • Redução de custos de consulta ao diminuir os dados escaneados;
  • Otimização automática de consultas, onde o BigQuery pode utilizar a view materializada em vez da tabela base de forma transparente, quando possível.

Criando uma View Materializada

Views materializadas são criadas usando CREATE MATERIALIZED VIEW e uma instrução padrão SELECT. O comportamento de atualização é controlado por opções de configuração.

-- 1. Create a materialized view for sales analysis by user loyalty status
CREATE MATERIALIZED VIEW `codefinity-442016.codeFinity_test.mv_sales_by_loyalty` 
OPTIONS(
  enable_refresh = true,
  refresh_interval_minutes = 60
) AS
SELECT 
  up.loyalty_status,
  COUNT(DISTINCT ps.user_id) AS user_count,
  COUNT(ps.sale_id) AS transaction_count,
  SUM(ps.quantity) AS total_items_sold,
  SUM(ps.quantity * ps.sale_price) AS total_revenue,
  AVG(ps.sale_price) AS avg_price_per_unit,
  MAX(PARSE_DATE('%Y-%m-%d', ps.sale_date)) AS last_sale_date
FROM 
  `codefinity-442016.codeFinity_test.product_sales_section4` ps
JOIN 
  `codefinity-442016.codeFinity_test.user_profile` up
  ON ps.user_id = up.user_id
GROUP BY 
  up.loyalty_status;

-- 2. Query the materialized view for much faster results
SELECT 
  loyalty_status,
  user_count,
  transaction_count,
  total_revenue,
  total_revenue / transaction_count AS avg_transaction_value,
  total_revenue / user_count AS revenue_per_user
FROM 
  `codefinity-442016.codeFinity_test.mv_sales_by_loyalty`
ORDER BY 
  total_revenue DESC;

Limitações a Serem Consideradas

Views materializadas possuem restrições importantes:

  • Certas funções com estado (como CURRENT_TIMESTAMP) não são permitidas;
  • Junções e agregações suportadas são limitadas a padrões determinísticos;
  • As tabelas base devem estar no mesmo dataset que a view materializada.

Essas restrições são importantes durante o projeto para garantir que a view permaneça elegível para atualização automática.

Exemplo

Um dashboard que acompanha métricas semanais de vendas pode consultar uma view materializada em vez da tabela de transações brutas. Isso melhora significativamente o tempo de carregamento, mantendo os dados razoavelmente atualizados.

Ponto Principal

Views materializadas são uma forma eficaz de escalar cargas de trabalho no BigQuery e gerenciar custos. São mais indicadas para consultas recorrentes, dashboards e cenários de relatórios onde atualizações quase em tempo real são suficientes.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 4. Capítulo 1
some-alt