Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Optimierung der Abfrageleistung | Fortgeschrittene BigQuery-Anwendungen und Optimierung
BigQuery Grundlagen

bookOptimierung der Abfrageleistung

Swipe um das Menü anzuzeigen

Verstehen Sie materialisierte Sichten in BigQuery, eine leistungsstarke Funktion zur Optimierung der Abfrageleistung und zur Kostenkontrolle. Materialisierte Sichten speichern vorab berechnete Abfrageergebnisse und eignen sich ideal für Dashboards und Berichte, die häufig ausgeführt werden, aber keine Echtzeit-Aktualisierungen erfordern.

Was ist eine materialisierte Sicht

Eine materialisierte Sicht speichert das Ergebnis einer Abfrage als physische Tabelle:

  • Sie wird automatisch basierend auf Änderungen in den zugrunde liegenden Daten aktualisiert;
  • Aktualisierungsintervalle können konfiguriert werden, zum Beispiel alle 60 Minuten;
  • Abfragen gegen eine materialisierte Sicht sind schneller und günstiger als Abfragen der Basistabelle.

Warum materialisierte Sichten verwenden

Materialisierte Sichten bieten mehrere wichtige Vorteile:

  • Verbesserte Leistung durch Vermeidung wiederholter Berechnungen;
  • Niedrigere Abfragekosten durch Reduzierung der gescannten Datenmenge;
  • Automatische Abfrageoptimierung, wobei BigQuery nach Möglichkeit transparent die materialisierte Sicht anstelle der Basistabelle verwendet.

Erstellen einer materialisierten Sicht

Materialisierte Sichten werden mit CREATE MATERIALIZED VIEW und einer Standard-SELECT-Anweisung erstellt. Das Aktualisierungsverhalten wird über Konfigurationsoptionen gesteuert.

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

Zu beachtende Einschränkungen

Materialisierte Sichten haben wichtige Einschränkungen:

  • Bestimmte zustandsbehaftete Funktionen (wie CURRENT_TIMESTAMP) sind nicht erlaubt;
  • Unterstützte Joins und Aggregationen sind auf deterministische Muster beschränkt;
  • Die Basistabellen müssen sich im selben Dataset wie die materialisierte Sicht befinden.

Diese Einschränkungen sind bei der Gestaltung zu berücksichtigen, damit die Sicht weiterhin für automatische Aktualisierungen geeignet bleibt.

Beispiel

Ein Dashboard, das wöchentliche Verkaufsmetriken verfolgt, kann eine materialisierte Sicht anstelle der Rohtransaktionstabelle abfragen. Dies verbessert die Ladezeiten erheblich und hält die Daten dennoch ausreichend aktuell.

Wichtigste Erkenntnis

Materialisierte Sichten sind ein effektives Mittel, um BigQuery-Workloads zu skalieren und Kosten zu steuern. Sie eignen sich besonders für wiederkehrende Abfragen, Dashboards und Berichtsszenarien, bei denen nahezu Echtzeit-Aktualisierungen ausreichen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 4. Kapitel 1
some-alt