Otimizaçã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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo