Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Optimering av Frågeprestanda | Avancerade BigQuery-Tillämpningar och Optimering
BigQuery-Grunder

bookOptimering av Frågeprestanda

Svep för att visa menyn

Förstå materialiserade vyer i BigQuery, en kraftfull funktion för att optimera frågeprestanda och kontrollera kostnader. Materialiserade vyer lagrar förberäknade frågeresultat, vilket gör dem idealiska för instrumentpaneler och rapporter som körs ofta men inte kräver realtidsuppdateringar.

Vad är en materialiserad vy

En materialiserad vy lagrar resultatet av en fråga som en fysisk tabell:

  • Uppdateras automatiskt baserat på förändringar i underliggande data;
  • Uppdateringsintervall kan konfigureras, till exempel var 60:e minut;
  • Frågor mot en materialiserad vy är snabbare och billigare än att fråga grundtabellen.

Varför använda materialiserade vyer

Materialiserade vyer ger flera viktiga fördelar:

  • Förbättrad prestanda genom att undvika upprepad beräkning;
  • Lägre frågekostnader genom att minska mängden skannad data;
  • Automatisk frågeoptimering, där BigQuery kan använda materialiserade vyn istället för grundtabellen när det är möjligt.

Skapa en materialiserad vy

Materialiserade vyer skapas med CREATE MATERIALIZED VIEW och ett standard SELECT-uttryck. Uppdateringsbeteende styrs via konfigurationsalternativ.

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

Begränsningar att känna till

Materialiserade vyer har viktiga begränsningar:

  • Vissa tillståndsberoende funktioner (som CURRENT_TIMESTAMP) är inte tillåtna;
  • Stödda joins och aggregeringar är begränsade till deterministiska mönster;
  • Grundtabellerna måste finnas i samma dataset som den materialiserade vyn.

Dessa begränsningar är viktiga att beakta vid utformning för att säkerställa att vyn förblir berättigad till automatisk uppdatering.

Exempel

En instrumentpanel som spårar veckovisa försäljningsmått kan fråga en materialiserad vy istället för den råa transaktionstabellen. Detta förbättrar laddningstiderna avsevärt samtidigt som datan hålls tillräckligt aktuell.

Viktig slutsats

Materialiserade vyer är ett effektivt sätt att skala BigQuery-arbetsbelastningar och hantera kostnader. De passar bäst för återkommande frågor, instrumentpaneler och rapporteringsscenarier där uppdateringar nära realtid är tillräckliga.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 1
some-alt