Einführung in materialisierte Ansichten

Materialisierte Ansichten sind vorausberechnete Ansichten, die die Ergebnisse einer SQL-Abfrage regelmäßig speichern. In einigen Anwendungsfällen reduzieren materialisierte Ansichten die Gesamtverarbeitungszeit und die damit verbundenen Kosten, indem sie die Menge der Daten reduzieren, die für jede Abfrage gescannt werden müssen. Sie können materialisierte Ansichten wie andere Datenressourcen abfragen.

Vorteile von materialisierten Ansichten

In den folgenden Anwendungsfällen wird der Wert von materialisierten Ansichten erläutert:

  • Daten vorverarbeiten : Verbessern Sie die Abfrageleistung, indem Sie Aggregate, Filter, Joins und Cluster vorbereiten.
  • Dashboard-Beschleunigung : Ermöglichen Sie BI-Tools wie Looker, die häufig dieselben aggregierten Messwerte abfragen, z. B. täglich aktive Nutzer.
  • Echtzeitanalysen für große Streams : Kann schnellere Antworten auf Tabellen liefern, die Streamingdaten mit hoher Geschwindigkeit empfangen.
  • Kostenverwaltung : Reduzieren Sie die Kosten für wiederholte, teure Abfragen für große Datasets.

Wichtige Merkmale

Materialisierte Ansichten haben folgende Hauptmerkmale:

  • Keinerlei Wartung erforderlich : BigQuery berechnet materialisierte Ansichten im Hintergrund vor, wenn sich Basistabellen ändern. BigQuery fügt materialisierten Ansichten automatisch inkrementelle Datenänderungen aus Basistabellen hinzu, ohne dass der Nutzer eingreifen muss.
  • Aktuelle Daten : Materialisierte Ansichten geben aktuelle Daten zurück. Wenn Änderungen an Basistabellen die materialisierte Ansicht ungültig machen, liest BigQuery die Daten direkt aus den Basistabellen. Wenn die Änderungen an den Basistabellen die materialisierte Ansicht nicht entwerten, liest BigQuery die restlichen Daten aus der materialisierten Ansicht und nur die Änderungen aus den Basistabellen.
  • Intelligente Feinabstimmung : Wenn ein Teil einer Abfrage gegen eine Basistabelle durch die Abfrage der materialisierten Ansicht gelöst werden kann, leitet BigQuery die Abfrage um, um die materialisierte Ansicht für eine bessere Leistung und Effizienz zu verwenden. Informationen dazu, wie und wann die intelligente Feinabstimmung Abfragen verbessern kann, finden Sie unter Materialisierte Ansichten verwenden.

Arten von materialisierten Ansichten

Es gibt zwei grundlegende Arten von materialisierten Ansichten:

  • Inkrementelle materialisierte Ansichten unterstützen eine begrenzte Anzahl von Features. Weitere Informationen zur unterstützten SQL-Syntax für materialisierte Ansichten finden Sie unter Materialisierte Ansichten erstellen. Nur inkrementelle materialisierte Ansichten können die intelligente Feinabstimmung nutzen.
  • Nicht inkrementelle materialisierte Ansichten unterstützen die meisten Syntaxen, die von inkrementellen materialisierten Ansichten nicht unterstützt werden.

Wenn Sie materialisierte Ansichten erstellen, können Sie mit BigQuery standardmäßig nur Ansichten erstellen, die auf inkrementellen Abfragen basieren. Wenn Sie eine nicht inkrementelle Ansicht erstellen möchten, können Sie in der Definition der materialisierten Ansicht allow_non_incremental_definition = true angeben.

Die beste Art der materialisierten Ansicht hängt von Ihrer Situation ab. In der folgenden Tabelle werden die Features von inkrementellen und nicht inkrementellen materialisierten Ansichten verglichen:

Kategorie Inkrementell Nicht inkrementell
Abfrage wird unterstützt Begrenzt Die meisten Abfragen
Wartung Kann die Kosten für häufig verwendete Abfragen reduzieren. Informationen zum Aktualisieren von materialisierten Ansichten finden Sie unter inkrementelle Aktualisierungen. Bei jeder Aktualisierung wird die vollständige Abfrage ausgeführt.
Unterstützung für intelligente Feinabstimmung Für die meisten Ansichtsabfragen unterstützt. Nein
Immer aktuelle Ergebnisse Unterstützt. Inkrementelle Ansichten geben aktuelle Abfrageergebnisse zurück, auch wenn sich die Basistabellen seit der letzten Aktualisierung geändert haben. Nein

Autorisierte materialisierte Ansichten

Sie können eine autorisierte materialisierte Ansicht erstellen, um eine Teilmenge der Daten aus einem Quelldataset für eine Ansicht in einem sekundären Dataset freizugeben. Anschließend können Sie diese Ansicht für bestimmte Nutzer und Gruppen (Prinzipale) freigeben. Prinzipale können die Daten abfragen, die Sie in einer Ansicht bereitstellen, aber nicht direkt auf das Quelldataset zugreifen.

Autorisierte Ansichten und autorisierte materialisierte Ansichten werden auf dieselbe Weise autorisiert. Weitere Informationen finden Sie unter Autorisierte Ansichten.

Interaktion mit anderen BigQuery-Features

Die folgenden BigQuery-Features funktionieren transparent mit materialisierten Ansichten:

  • Erklärung durch Abfrageplan. Der Abfrageplan gibt an, welche materialisierten Ansichten gescannt wurden (sofern vorhanden) und wie viele Byte aus der materialisierten Ansicht und den Basistabellen insgesamt gelesen werden.

  • Abfrage-Caching. Die Ergebnisse einer Abfrage, die von BigQuery mit einer materialisierten Ansicht neu geschrieben werden, können im Rahmen der üblichen Beschränkungen (Verwendung deterministischer Funktionen, kein Streaming in die Basistabellen usw.) im Cache gespeichert werden.

  • Kosteneinschränkung. Wenn Sie einen Wert für die maximal in Rechnung gestellten Byte angeben und eine Abfrage Daten über das festgelegte Limit hinaus liest, schlägt die Abfrage fehl, ohne dass dafür Kosten anfallen. Dies ist unabhängig davon, ob für die Abfrage materialisierte Ansichten, die Basistabellen oder beides verwendet wurde.

  • Kostenschätzung mit Probelauf. Bei einem Probelauf wird die Logik für das Neuschreiben der Abfrage anhand der verfügbaren materialisierten Ansichten wiederholt und eine Kostenschätzung bereitgestellt. Mit dieser Funktion können Sie testen, ob eine bestimmte Abfrage materialisierte Ansichten verwendet.

  • Regionenübergreifende Datenreplikation. Materialisierte Ansichten können für BigQuery-Tabellen erstellt werden, für die die regionenübergreifende Replikation aktiviert ist, aber nur in der primären Region. Wenn Sie die sekundäre Region verwenden, kann die folgende Fehlermeldung auftreten: The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.

Zusätzlich zu diesen Features können Sie materialisierte Ansichten für Tabellen mit bestimmten Features erstellen, wie in den folgenden Abschnitten beschrieben.

Tabellen mit aktivem Change Data Capture

Sie können materialisierte Ansichten für Tabellen mit aktivem Change Data Capture (CDC) erstellen. Diese materialisierten Ansichten funktionieren wie materialisierte Ansichten über BigQuery-Tabellen, einschließlich der Vorteile einer automatischen Aktualisierung. Materialisierte Ansichten können keine Merge-Abfragen zur Laufzeitausführen, daher müssen Sie materialisierte Ansichten mit einem ausreichenden max_staleness konfigurieren, um Merge-Jobs zur Laufzeit zu vermeiden. Weitere Informationen finden Sie unter Einschränkungen von materialisierten Ansichten über Tabellen mit aktivem Change Data Capture.

BigLake-Metadaten-Cache-fähige Tabellen

Materialisierte Ansichten über BigLake-Metadaten-Cache-fähige Tabellen können auf strukturierte Daten verweisen, die in Cloud Storage und Amazon Simple Storage Service (Amazon S3) gespeichert sind. Diese materialisierten Ansichten funktionieren wie materialisierte Ansichten über von BigQuery verwalteten Speichertabellen, einschließlich der Vorteile einer automatischen Aktualisierung und intelligenten Abstimmung. Weitere Vorteile sind das Voraggregieren, Vorfiltern und Vorverknüpfen von Daten, die außerhalb von BigQuery gespeichert sind. Materialisierte Ansichten über BigLake-Tabellen werden in einem von BigQuery verwalteten Speicher gespeichert und weisen alle Eigenschaften dieses Speichers auf.

Wenn Sie eine materialisierte Ansicht über einer Amazon S3 BigLake-Tabelle erstellen, sind die Daten in der materialisierten Ansicht nicht für Joins mit BigQuery-Daten verfügbar. Wenn Sie Amazon S3 Daten in einer materialisierten Ansicht für Joins verfügbar machen möchten, erstellen Sie ein Replikat für materialisierte Ansichten. Sie können Replikate für materialisierte Ansichten nur über autorisierte materialisierte Ansichten erstellen.

Beschränkungen

Für materialisierte Ansichten gelten die folgenden Beschränkungen:

  • Es können Limits für Basistabellenreferenzen und andere Einschränkungen gelten. Weitere Informationen zu den Beschränkungen für materialisierte Ansichten finden Sie unter Kontingente und Beschränkungen.
  • Sie können materialisierte Ansichtsdaten nicht direkt mit Vorgängen wie COPY, EXPORT, LOAD, WRITE oder DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) aktualisieren oder bearbeiten.
  • Sie können die Abfrage für eine materialisierte Ansicht nach dem Erstellen nicht mehr aktualisieren.
  • Eine materialisierte Ansicht muss sich in derselben Organisation wie ihre Basistabellen befinden oder in demselben Projekt, wenn das Projekt nicht zu einer Organisation gehört.
  • Materialisierte Ansichten verwenden eine eingeschränkte SQL-Syntax und eine begrenzte Anzahl von Aggregationsfunktionen. Weitere Informationen finden Sie unter Abfrageunterstützung für materialisierte Ansichten.
  • Materialisierte Ansichten können nicht in anderen materialisierten Ansichten verschachtelt werden.
  • Materialisierte Ansichten können keine externen oder Platzhaltertabellen, logische Ansichten1 oder Snapshots abfragen.
  • Materialisierte Ansichten unterstützen keine Systemvariablen, z. B. die @@session_id Systemvariable.
  • Der Wert der Option max_staleness muss zwischen 30 Minuten und 3 Tagen liegen (einschließlich).
  • Materialisierte Ansichten unterstützen nur den GoogleSQL-Dialekt.
  • Sie können Beschreibungen für materialisierte Ansichten festlegen, aber nicht für einzelne Spalten in der materialisierten Ansicht.
  • Wenn Sie die Basistabelle löschen, ohne zuerst die materialisierte Ansicht zu löschen, schlagen Abfragen und Aktualisierungen der materialisierten Ansicht fehl. Wenn Sie die Basistabelle neu erstellen, müssen Sie auch die materialisierte Ansicht neu erstellen.
  • Nur nicht inkrementelle materialisierte Ansichten können Spanner Basistabellen für externe Datasets haben. Wenn die letzte Aktualisierung einer nicht inkrementellen materialisierten Ansicht außerhalb des max_staleness-Intervalls erfolgt ist, liest die Abfrage die Basistabellen des externen Spanner-Datasets. Weitere Informationen zu Spanner-Tabellen für externe Datasets finden Sie unter Materialisierte Ansichten über Spanner-Tabellen für externe Datasets erstellen.
  • BigQuery speichert Abfrageergebnisse nicht im Cache, wenn die Abfrage für nicht inkrementelle materialisierte Ansichten ausgeführt wird, die auf Spanner-Tabellen für externe Datasets verweisen.
  • Materialisierte Ansichten können keine parametrisierten Datentypen übernehmen oder explizit definieren, wie STRING(n), da parametrisierte Datentypen nur für Basistabellenspalten und Skriptvariablen unterstützt werden.

1 Die Unterstützung für Referenzen auf logische Ansichten befindet sich in der Vorschau. Weitere Informationen finden Sie unter Auf logische Ansichten verweisen.

Einschränkungen von materialisierten Ansichten über Tabellen mit aktivem CDC

Für materialisierte Ansichten mit aktiven Change Data Capture-Basistabellen gelten die folgenden Einschränkungen:

  • Wenn eine materialisierte Ansicht eine Basistabelle mit aktivem Change Data Capturehat, können Sie in einer Abfrage, die auch auf die materialisierte Ansicht verweist, nicht auf diese Tabelle verweisen.
  • Wenn Sie eine materialisierte Ansicht über einer Tabelle mit aktivem Change Data Capture erstellen, kann die materialisierte Ansicht die Merge-Jobs zur Laufzeit der zugrunde liegenden CDC-Tabelle nicht ausführen. Legen Sie den max_staleness Wert der materialisierten Ansicht auf mindestens das Doppelte des max_staleness Werts von der Basistabelle fest. Abfragen für eine materialisierte Ansicht schlagen fehl, wenn die aktuelle Version der zugrunde liegenden CDC-Tabelle älter ist als der max_staleness-Wert der materialisierten Ansicht.
  • Sie können die intelligente Feinabstimmung nicht für materialisierte Ansichten über Tabellen mit aktivem Change Data Capture verwenden.

Einschränkungen von materialisierten Ansichten über BigLake-Tabellen

Für materialisierte Ansichten über BigLake-Tabellen gelten die folgenden Einschränkungen:

  • Sie können die materialisierte Ansicht nicht partitionieren. Die Basistabellen können die Apache Hive-Partitionierung verwenden, Sie können den Speicher der materialisierten Ansicht jedoch nicht in BigLake-Tabellen partitionieren. Dies bedeutet, dass jeder Löschvorgang in einer Basistabelle eine vollständige Aktualisierung der materialisierten Ansicht verursacht. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen.
  • Der Wert der --max_staleness Option der materialisierten Ansicht muss größer sein als der Wert der BigLake-Basis tabelle.
  • Sie können in der Definition einer einzigen materialisierten Ansicht keinen Join zwischen von BigQuery verwalteten Tabellen und BigLake-Tabellen ausführen.
  • BigQuery BI Engine unterstützt keine Beschleunigung von materialisierten Ansichten über BigLake-Tabellen.

Preise für materialisierte Ansichten

Für materialisierte Ansichten fallen Kosten auf folgende Weise an:

  • Abfragen von materialisierten Ansichten.
  • Pflegen von materialisierten Ansichten, z. B. wann materialisierte Ansichten aktualisiert werden. Die Kosten für die automatische Aktualisierung werden dem Projekt in Rechnung gestellt, in dem sich die Ansicht befindet. Die Kosten für die manuelle Aktualisierung werden dem Projekt in Rechnung gestellt, in dem der manuelle Aktualisierungsjob ausgeführt wird. Weitere Informationen zur Kostenkontrolle für Wartungen finden Sie unter Jobwartung aktualisieren.
  • Speichern von Tabellen materialisierter Ansichten.

In der folgenden Tabelle sind die Preisbestandteile für materialisierte Ansichten aufgeführt:

Komponente On-Demand-Preise Kapazitätsbasierte Preise
Abfragen Byte, die von materialisierten Ansichten verarbeitet werden, und alle erforderlichen Teile der Basistabellen.1 Slots werden während der Abfrage verbraucht.
Wartung Während der Aktualisierung verarbeitete Byte. Slots werden während der Aktualisierung benötigt.
Speicher In materialisierten Ansichten gespeicherte Byte. In materialisierten Ansichten gespeicherte Byte.

1 Nach Möglichkeit liest BigQuery nur die Änderungen seit der letzten Aktualisierung der Ansicht. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen.

Details zu den Speicherkosten

Die Art und Weise, wie BigQuery bestimmte aggregierte Werte speichert, wirkt sich auf die Berechnung der Speichergröße aus. Bei aggregierten Werten des Typs AVG, ARRAY_AGG und APPROX_COUNT_DISTINCT in einer materialisierten Ansicht wird der endgültige Wert nicht direkt gespeichert. BigQuery speichert stattdessen intern eine materialisierte Ansicht als Zwischen skizze. Diese wird verwendet, um den endgültigen Wert zu generieren.

Sehen Sie sich als Beispiel eine materialisierte Ansicht an, die mit dem folgenden Befehl erstellt wurde:

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT date, AVG(net_paid) AS avg_paid
FROM project-id.my_dataset.my_base_table
GROUP BY date

Während die Spalte avg_paid als NUMERIC oder FLOAT64 angezeigt wird, wird sie intern als BYTES gespeichert. Der Inhalt ist dabei eine Zwischenskizze in einem proprietären Format. Für die Berechnung der Datengröße, wird die Spalte als BYTES behandelt.

Nächste Schritte