Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Ottimizzazione delle Prestazioni delle Query | Applicazioni Avanzate di BigQuery e Ottimizzazione
Fondamenti di BigQuery

bookOttimizzazione delle Prestazioni delle Query

Scorri per mostrare il menu

Comprendere le materialized view in BigQuery, una funzionalità avanzata per ottimizzare le prestazioni delle query e controllare i costi. Le materialized view memorizzano i risultati delle query precomputati, rendendole ideali per dashboard e report eseguiti frequentemente ma che non richiedono aggiornamenti in tempo reale.

Che cos'è una Materialized View

Una materialized view memorizza il risultato di una query come una tabella fisica:

  • Si aggiorna automaticamente in base alle modifiche dei dati sottostanti;
  • Gli intervalli di aggiornamento possono essere configurati, ad esempio ogni 60 minuti;
  • Le query su una materialized view sono più veloci ed economiche rispetto a quelle sulla tabella di origine.

Perché Utilizzare le Materialized View

Le materialized view offrono diversi vantaggi chiave:

  • Prestazioni migliorate evitando calcoli ripetuti;
  • Costi di query inferiori grazie alla riduzione dei dati scansionati;
  • Ottimizzazione automatica delle query, in cui BigQuery può utilizzare in modo trasparente la materialized view invece della tabella di origine quando possibile.

Creazione di una Materialized View

Le materialized view vengono create utilizzando CREATE MATERIALIZED VIEW e una normale istruzione SELECT. Il comportamento di aggiornamento è controllato tramite opzioni di configurazione.

-- 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;

Limitazioni da Considerare

Le materialized view presentano vincoli importanti:

  • Alcune funzioni stateful (come CURRENT_TIMESTAMP) non sono consentite;
  • Join e aggregazioni supportate sono limitate a pattern deterministici;
  • Le tabelle di origine devono trovarsi nello stesso dataset della materialized view.

Queste restrizioni sono importanti da considerare in fase di progettazione per garantire che la view rimanga idonea all'aggiornamento automatico.

Esempio

Una dashboard che monitora le metriche di vendita settimanali può interrogare una materialized view invece della tabella delle transazioni grezze. Questo migliora significativamente i tempi di caricamento mantenendo i dati sufficientemente aggiornati.

Punto Chiave

Le materialized view sono un modo efficace per scalare i carichi di lavoro BigQuery e gestire i costi. Sono particolarmente adatte per query ricorrenti, dashboard e scenari di reporting in cui sono sufficienti aggiornamenti quasi in tempo reale.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 4. Capitolo 1
some-alt