Materialisierte Ansichten verwalten
In diesem Dokument wird beschrieben, wie Sie materialisierte Ansichten in BigQuery verwalten können.
Die BigQuery-Verwaltung von materialisierten Ansichten umfasst die folgenden Vorgänge:
- Materialisierte Ansichten ändern
- Materialisierte Ansichten auflisten
- Informationen zu materialisierten Ansichten abrufen
- Materialisierte Ansichten löschen
- Materialisierte Ansichten aktualisieren
Weitere Informationen zu materialisierten Ansichten finden Sie hier:
- Einführung in materialisierte Ansichten
- Materialisierte Ansichten erstellen
- Materialisierte Ansichten verwenden
- Materialisierte Ansichten überwachen
Hinweis
Weisen Sie IAM-Rollen (Identity and Access Management) zu, die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument gewähren. Die Berechtigungen, die zum Ausführen einer Aufgabe erforderlich sind (sofern zutreffend), werden im Abschnitt „Erforderliche Berechtigungen“ der Aufgabe aufgelistet.
Materialisierte Ansichten ändern
Sie können eine materialisierte Ansicht über die Google Cloud Console oder das bq-Befehlszeilentool ändern. Verwenden Sie dafür die Datendefinitionssprache (DDL, Data Definition Language) mit ALTER MATERIALIZED
VIEW
und SET OPTIONS
. Eine Liste der Optionen für die materialisierte Ansicht finden Sie unter materialized_view_set_options_list
.
Im folgenden Beispiel wird enable_refresh
auf true
gesetzt. Passen Sie dies nach Bedarf an Ihren Fall an.
Erforderliche Berechtigungen
Zum Ändern von materialisierten Ansichten benötigen Sie die IAM-Berechtigungen bigquery.tables.get
und bigquery.tables.update
.
Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Ändern einer materialisierten Ansicht benötigen:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Weitere Informationen zu BigQuery Identity and Access Management (IAM) finden Sie unter Vordefinierte Rollen und Berechtigungen.
SQL
Verwenden Sie die DDL-Anweisung ALTER MATERIALIZED VIEW SET OPTIONS
, um eine materialisierte Ansicht zu ändern:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Dabei gilt:
PROJECT
: der Name des Projekts, das die materialisierte Ansicht enthältDATASET
: der Name des Datasets, das die materialisierte Ansicht enthältMATERIALIZED_VIEW
: der Name der materialisierten Ansicht, die Sie ändern möchten
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Führen Sie den Befehl bq update
aus:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Materialisierte Ansichten auflisten
Sie können materialisierte Ansichten über die Google Cloud Console, das bq-Befehlszeilentool oder die BigQuery API auflisten.
Erforderliche Berechtigungen
Zum Auflisten von materialisierten Ansichten in einem Dataset benötigen Sie die IAM-Berechtigung bigquery.tables.list
.
Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Auflisten von materialisierten Ansichten in einem Dataset benötigen:
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Weitere Informationen zu IAM-Rollen und Berechtigungen in IAM finden Sie unter Vordefinierte Rollen und Berechtigungen.
Der Vorgang zum Auflisten von materialisierten Ansichten ist mit dem Vorgang zum Auflisten von Tabellen identisch. So listen Sie die Ansichten in einem Dataset auf:
Console
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Scrollen Sie durch die Liste, um die Tabellen im Dataset aufzurufen. Tabellen, Ansichten und materialisierte Ansichten werden durch unterschiedliche Symbole gekennzeichnet.
bq
Führen Sie den Befehl bq ls
aus. Mit dem Flag --format
kann die Ausgabe gesteuert werden. Wenn Sie materialisierte Ansichten eines anderen Projekts als Ihres Standardprojekts auflisten möchten, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: project_id:dataset
.
bq ls --format=pretty project_id:dataset
Dabei gilt:
- project_id ist die Projekt-ID.
- dataset ist der Name des Datasets.
Wenn Sie den Befehl ausführen, wird im Type
-Feld der Tabellentyp angezeigt.
Beispiel:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Beispiele:
Geben Sie den folgenden Befehl ein, um materialisierte Ansichten im Dataset mydataset
in Ihrem Standardprojekt aufzulisten:
bq ls --format=pretty mydataset
Geben Sie den folgenden Befehl ein, um materialisierte Ansichten im Dataset mydataset
im Projekt myotherproject
aufzulisten.
bq ls --format=pretty myotherproject:mydataset
API
Zum Auflisten von materialisierten Ansichten über die API rufen Sie die Methode tables.list
auf.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Informationen zu materialisierten Ansichten abrufen
Sie können Informationen zu einer materialisierten Ansicht mit SQL, dem bq-Befehlszeilentool oder der BigQuery API abrufen.
Erforderliche Berechtigungen
Zum Abfragen von Informationen zu einer materialisierten Ansicht benötigen Sie die folgenden IAM-Berechtigungen (Identity and Access Management):
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Die folgenden vordefinierten IAM-Rollen enthalten jeweils die vorherigen Berechtigungen:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
So rufen Sie Informationen zu einer materialisierten Ansicht ab, einschließlich aller abhängigen Replikate der materialisierten Ansicht:
SQL
Fragen Sie die Ansicht INFORMATION_SCHEMA.TABLES
ab, um Informationen zu materialisierten Ansichten abzurufen:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Dabei gilt:
PROJECT_ID
: der Name des Projekts, das die materialisierten Ansichten enthältDATASET_ID
: der Name des Datasets, das die materialisierten Ansichten enthält
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Führen Sie den Befehl bq show
aus:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Ersetzen Sie Folgendes:
- project_id: Projekt-ID. Sie müssen dieses Flag nur angeben, um Informationen zu einer materialisierten Ansicht in einem anderen Projekt als dem Standardprojekt abzurufen.
- dataset: Der Name des Datasets, das die materialisierte Ansicht enthält.
- materialized_view: der Name der materialisierte Ansicht, zu dem Sie Informationen benötigen.
Beispiel:
Geben Sie den folgenden Befehl ein, um Informationen zu der materialisierte Ansichtmy_mv
im Dataset report_views
im Projekt myproject
aufzurufen.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Rufen Sie die Methode tables.get
auf, um Informationen zu materialisierten Ansichten mithilfe der API abzurufen.
Materialisierte Ansichten löschen
Sie können eine materialisierte Ansicht über die Google Cloud Console, das bq-Befehlszeilentool oder die API löschen.
Beim Löschen einer materialisierten Ansicht werden auch alle mit dieser materialisierten Ansicht verknüpften Berechtigungen gelöscht. Wenn Sie eine gelöschte materialisierte Ansicht neu erstellen, müssen Sie auch zuvor alle Zugriffsberechtigungen neu konfigurieren.
Erforderliche Berechtigungen
Zum Erstellen von materialisierten Ansichten benötigen Sie die IAM-Berechtigung bigquery.tables.delete
.
Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie für das Löschen einer Tabelle benötigen:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Weitere Informationen zu BigQuery Identity and Access Management (IAM) finden Sie unter Vordefinierte Rollen und Berechtigungen.
SQL
Verwenden Sie die DDL-Anweisung DROP MATERIALIZED VIEW
, um eine materialisierte Ansicht zu löschen:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Dabei gilt:
PROJECT
: der Name des Projekts, das die materialisierte Ansicht enthältDATASET
: der Name des Datasets, das die materialisierte Ansicht enthältMATERIALIZED_VIEW
: der Name der materialisierten Ansicht, die Sie löschen möchten
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Verwenden Sie den bq rm
-Befehl, um die materialisierte Ansicht zu löschen.
API
Rufen Sie die Methode tables.delete
auf und geben Sie Werte für die Parameter projectId
, datasetId
und tableId
an:
- Weisen Sie Ihrer Projekt-ID den Parameter
projectId
zu. - Weisen Sie Ihrer Dataset-ID den Parameter
datasetId
zu. - Weisen Sie der Tabellen-ID der materialisierten Ansicht, die Sie löschen möchten, den Parameter
tableId
zu.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Materialisierte Ansichten aktualisieren
Durch Aktualisieren einer materialisierten Ansicht werden die im Cache gespeicherten Daten der Ansicht aktualisiert, um den aktuellen Status ihrer Basistabellen widerzuspiegeln.
Wenn Sie eine materialisierte Ansicht abfragen, gibt BigQuery Ergebnisse sowohl aus den im Cache gespeicherten Daten der materialisierten Ansicht als auch aus den Daten zurück, die aus der Basistabelle abgerufen wurden. Nach Möglichkeit liest BigQuery nur die Änderungen seit der letzten Aktualisierung der Ansicht. Obwohl kürzlich gestreamte Daten während der Aktualisierung der materialisierten Ansicht möglicherweise nicht enthalten sind, lesen Abfragen immer gestreamte Daten, unabhängig davon, ob eine materialisierte Ansicht verwendet wird.
Wenn Abfrageergebnisse direkt aus der Basistabelle zurückgegeben werden, sind die Rechenkosten höher als bei der Rückgabe von Ergebnissen aus im Cache gespeicherten Daten der materialisierten Ansicht. Wenn Sie die im Cache gespeicherten Daten einer materialisierten Ansicht regelmäßig aktualisieren, wird die Menge der direkt aus der Basistabelle zurückgegebenen Daten reduziert. Dadurch sinken die Rechenkosten.
In diesem Abschnitt wird Folgendes beschrieben:
Automatische Aktualisierung
Sie können die automatische Aktualisierung jederzeit aktivieren oder deaktivieren. Der automatische Aktualisierungsjob wird vom Dienstkonto bigquery-adminbot@system.gserviceaccount.com
ausgeführt und im Jobverlauf des Projekts mit der materialisierten Ansicht angezeigt.
Standardmäßig werden im Cache einer materialisierten Ansicht gespeicherte Daten innerhalb von 5 bis 30 Minuten nach einer Änderung an der Basistabelle, z. B. nach Einfügen oder Löschen von Zeilen, automatisch aus der Basistabelle aktualisiert.
Mit der Aktualisierungshäufigkeitsbegrenzung können Sie die Häufigkeit der automatischen Aktualisierung von im Cache gespeicherten Daten verwalten und so die Kosten und die Abfrageleistung von materialisierten Ansichten verwalten.
Automatische Aktualisierung aktivieren und deaktivieren
Wenn Sie die automatische Aktualisierung beim Erstellen einer materialisierten Ansicht deaktivieren möchten, setzen Sie enable_refresh
auf false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
Bei einer vorhandenen materialisierten Ansicht können Sie den Wert enable_refresh
mit ALTER MATERIALIZED VIEW
ändern.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Frequency Capping festlegen
Sie können festlegen, wie häufig die automatische Aktualisierung durchgeführt wird. Standardmäßig werden materialisierte Ansichten nicht häufiger als alle 30 Minuten aktualisiert.
Die Aktualisierungshäufigkeit kann jederzeit geändert werden.
Wenn Sie beim Erstellen einer materialisierten Ansicht eine Häufigkeitsbegrenzung festlegen möchten, setzen Sie refresh_interval_minutes
in DDL (oder refresh_interval_ms
in der API und im bq-Befehlszeilentool) auf den von Ihnen erstellten Wert.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
Ebenso können Sie die Häufigkeitsbegrenzung beim Ändern einer materialisierten Ansicht festlegen. In diesem Beispiel wird davon ausgegangen, dass Sie die automatische Aktualisierung bereits aktiviert haben und nur die Häufigkeitsbegrenzung ändern möchten:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
Die Mindesthäufigkeit der Aktualisierungen beträgt 1 Minute. Die maximale Häufigkeit für Aktualisierungen beträgt sieben Tage.
Sie können eine materialisierte Ansicht jederzeit manuell aktualisieren. Dies unterliegt nicht der Häufigkeitsbegrenzung.
Best-Effort-Ansatz
Die automatische Aktualisierung erfolgt auf Best-Effort-Basis. BigQuery versucht, innerhalb von fünf Minuten nach einer Änderung an der Basistabelle eine Aktualisierung zu starten (vorausgesetzt, die vorherige Aktualisierung wurde vor über 30 Minuten durchgeführt). Es wird jedoch nicht garantiert, dass die Aktualisierung zu diesem Zeitpunkt gestartet wird oder dass der Vorgang abgeschlossen wird.
Die automatische Aktualisierung wird ähnlich behandelt wie eine Abfrage mit der Batch-Priorität. Wenn das Projekt der materialisierten Ansicht derzeit nicht über die Kapazität verfügt, erfolgt die Aktualisierung verzögert. Wenn das Projekt viele Ansichten enthält, deren Aktualisierung teuer ist, kann jede einzelne Ansicht im Verhältnis zu den Basistabellen erheblich verzögert sein.
Manuelle Aktualisierung
Sie können eine materialisierte Ansicht jederzeit manuell aktualisieren.
Erforderliche Berechtigungen
Zum manuellen Aktualisieren materialisierter Ansichten benötigen Sie die IAM-Berechtigungen bigquery.tables.getData
, bigquery.tables.update
und bigquery.tables.updateData
.
Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum manuellen Aktualisieren einer materialisierten Ansicht benötigen:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Weitere Informationen zu BigQuery Identity and Access Management (IAM) finden Sie unter Vordefinierte Rollen und Berechtigungen.
Rufen Sie das Systemverfahren BQ.REFRESH_MATERIALIZED_VIEW
auf, um die Daten in der materialisierten Ansicht zu aktualisieren. Beim Aufruf dieses Systemvorgangs identifiziert BigQuery die Änderungen, die in den Basistabellen stattgefunden haben, und wendet diese Änderungen auf die materialisierte Ansicht an. Die Abfrage zum Ausführen von BQ.REFRESH_MATERIALIZED_VIEW
ist beendet, wenn die Aktualisierung abgeschlossen ist.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Materialisierte Ansichten überwachen
Mit der BigQuery API können Sie Informationen zu materialisierten Ansichten und Aktualisierungsjobs zu materialisierten Ansichten abrufen. Weitere Informationen finden Sie unter Materialisierte Ansichten überwachen.