Tabellen-Snapshots erstellen
In diesem Dokument wird beschrieben, wie Sie mit der Google Cloud Console, der SQL-Anweisung CREATE SNAPSHOT TABLE
, dem bq cp --snapshot
-Befehl oder der jobs.insert
API einen Snapshot einer Tabelle erstellen. Dieses Dokument richtet sich an Nutzer, die mit BigQuery-Tabellen-Snapshots vertraut sind.
Berechtigungen und Rollen
In diesem Abschnitt werden die IAM-Berechtigungen (Identity and Access Management) beschrieben, die Sie zum Erstellen eines Tabellen-Snapshots benötigen, und die vordefinierten IAM-Rollen, die diese Berechtigungen gewähren.
Berechtigungen
Zum Erstellen eines Tabellen-Snapshots benötigen Sie die folgenden Berechtigungen:
Berechtigung | Ressource | Notes |
---|---|---|
Alle der Folgenden:bigquery.tables.get bigquery.tables.getData bigquery.tables.createSnapshot bigquery.datasets.get bigquery.jobs.create
|
Die Tabelle, von der Sie einen Snapshot erstellen möchten. | Da der Snapshot nach Ablauf des Snapshots später gelöscht wird, benötigen Sie zum Erstellen eines Snapshots mit einer Ablaufzeit die Berechtigung bigquery.tables.deleteSnapshot . |
bigquery.tables.create bigquery.tables.updateData
|
Das Dataset, das den Tabellen-Snapshot enthält. |
Rollen
Die folgenden vordefinierten BigQuery-Rollen bieten die erforderlichen Berechtigungen:
Rolle | Ressource | Notes |
---|---|---|
Mindestens eine der folgenden:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner Und mindestens eine der folgenden: bigquery.jobUser bigquery.studioUser bigquery.user bigquery.studioAdmin bigquery.admin
|
Die Tabelle, von der Sie einen Snapshot erstellen möchten. | Zum Erstellen eines Snapshots mit Ablaufzeit können nur bigquery.dataOwner , bigquery.admin und bigquery.studioAdmin verwendet werden. |
Mindestens eine der folgenden:bigquery.dataEditor bigquery.dataOwner bigquery.studioAdmin bigquery.admin
|
Das Dataset, das den neuen Tabellen-Snapshot enthält. |
Beschränkungen
Informationen zu den Beschränkungen von Tabellen-Snapshots finden Sie unter Beschränkungen von Tabellen-Snapshots.
Außerdem unterliegt das Erstellen von Tabellen-Snapshots den folgenden Beschränkungen, die für alle Tabellenkopierjobs gelten:
- Wenn Sie einen Tabellen-Snapshot erstellen, muss dessen Name denselben Namensregeln wie beim Erstellen einer Tabelle entsprechen.
- Das Erstellen von Tabellen-Snapshots unterliegt den Limits für BigQuery-Kopierjobs.
- Das Tabellen-Snapshot-Dataset muss sich in derselben Region und unter derselben Organisation wie das Dataset befinden, das die Tabelle des Snapshots enthält. Beispielsweise können Sie keinen Tabellen-Snapshot in einem US-basierten Dataset einer Tabelle erstellen, die sich in einem EU-basierten Dataset befindet. Sie müssen stattdessen eine Kopie der Tabelle anlegen.
- Die Zeit, die BigQuery zum Erstellen von Tabellen-Snapshots benötigt, kann in verschiedenen Ausführungen erheblich variieren, da der zugrunde liegende Speicher dynamisch verwaltet wird.
Tabellen-Snapshot erstellen
Es empfiehlt sich, einen Tabellen-Snapshot in einem anderen Dataset als die Basistabelle zu erstellen. Mit dieser Vorgehensweise kann die Basistabelle aus ihrem Tabellen-Snapshot wiederhergestellt werden, auch wenn das Dataset der Basistabelle versehentlich gelöscht wird.
Wenn Sie einen Tabellen-Snapshot erstellen, geben Sie die Tabelle an, die Sie erstellen möchten, sowie einen eindeutigen Namen für den Tabellen-Snapshot. Optional können Sie die Zeit des Snapshots und den Ablauf des Tabellen-Snapshots angeben.
Tabellen-Snapshot mit Ablauf erstellen
Sie können mit einer der folgenden Optionen einen Snapshot einer Tabelle erstellen, der nach 24 Stunden abläuft:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer die Projekt- und Dataset-Knoten der Tabelle, von der Sie einen Snapshot erstellen möchten.
Klicken Sie auf den Namen der Tabelle, von der Sie einen Snapshot erstellen möchten.
Klicken Sie im Tabellenbereich auf Snapshot.
Geben Sie im angezeigten Bereich Tabellen-Snapshot erstellen die Informationen für Projekt, Dataset und Tabelle für den neuen Tabellen-Snapshot ein.
Geben Sie im Feld Ablaufzeit das Datum und die Uhrzeit für 24 Stunden ab jetzt ein.
Klicken Sie auf Speichern.
SQL
Verwenden Sie die DDL-Anweisung CREATE SNAPSHOT TABLE
:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME OPTIONS ( expiration_timestamp = TIMESTAMP 'TIMESTAMP_VALUE');
Dabei gilt:
SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.TIMESTAMP_VALUE
: ein Zeitstempelwert, der das Datum und die Uhrzeit in 24 Stunden ab jetzt darstellt.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Führen Sie dazu in Cloud Shell den folgenden Befehl aus.
bq cp \ --snapshot \ --no_clobber \ --expiration=86400 \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Dabei gilt:
TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.
Das Flag --no_clobber
ist erforderlich.
API
Rufen Sie die Methode jobs.insert
mit den folgenden Parametern auf:
Parameter | Value |
---|---|
projectId |
Die Projekt-ID des Projekts, das für diesen Vorgang abgerechnet wird. |
Anfragetext | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY", "destinationExpirationTime":"TIMESTAMP_VALUE" } } } |
Dabei gilt:
TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.TIMESTAMP_VALUE
: ein Zeitstempelwert, der das Datum und die Uhrzeit in 24 Stunden ab jetzt darstellt.
Wie bei Tabellen läuft der Tabellen-Snapshot, wenn keine Ablaufzeit angegeben ist, nach der Standardablaufzeit für die Tabelle oder das Dataset ab, das den Tabellen-Snapshot enthält.
Tabellenübersicht mit Zeitreise erstellen
Sie können einen Tabellen-Snapshot einer Tabelle von vor einer Stunde erstellen. Verwenden Sie dazu eine der folgenden Optionen:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer die Projekt- und Dataset-Knoten der Tabelle, von der Sie einen Snapshot erstellen möchten.
Klicken Sie auf den Namen der Tabelle, von der Sie einen Snapshot erstellen möchten.
Klicken Sie im Tabellenbereich auf Snapshot.
Geben Sie im angezeigten Bereich Tabellen-Snapshot erstellen die Informationen für Projekt, Dataset und Tabelle für den neuen Tabellen-Snapshot ein.
Geben Sie im Feld Snapshot-Zeit das Datum und die Uhrzeit von vor einer Stunde ein.
Klicken Sie auf Speichern.
SQL
Verwenden Sie die DDL-Anweisung CREATE SNAPSHOT TABLE
mit einer FOR SYSTEM_TIME AS OF
-Klausel:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Dabei gilt:
SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Führen Sie dazu in Cloud Shell den folgenden Befehl aus.
bq cp \ --no_clobber \ --snapshot \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME@-3600000 \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Dabei gilt:
TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.
Das Flag --no_clobber
ist erforderlich.
API
Rufen Sie die Methode jobs.insert
mit den folgenden Parametern auf:
Parameter | Value |
---|---|
projectId |
Die Projekt-ID des Projekts, das für diesen Vorgang abgerechnet wird. |
Anfragetext | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME@-360000" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
Dabei gilt:
TABLE_PROJECT_ID
: die Projekt-ID des Projekts, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_DATASET_NAME
: der Name des Datasets, das die Tabelle enthält, aus der Sie den Snapshot erstellen.TABLE_NAME
: der Name der Tabelle, aus der Sie den Snapshot erstellen.SNAPSHOT_PROJECT_ID
: die Projekt-ID des Projekts, in dem der Snapshot erstellt werden soll.SNAPSHOT_DATASET_NAME
: der Name des Datasets, in dem der Snapshot erstellt werden soll.SNAPSHOT_NAME
: der Name des Snapshots, den Sie erstellen.
Weitere Informationen zum Angeben einer früheren Version einer Tabelle finden Sie unter Auf Verlaufsdaten über Zeitreisen zugreifen.
Tabellenzugriffssteuerung
Informationen zum Steuern des Zugriffs auf Tabellen in BigQuery finden Sie unter Einführung in die Tabellenzugriffssteuerung.
Wenn Sie einen Tabellen-Snapshot erstellen, wird der Zugriff auf Tabellenebene auf den Tabellen-Snapshot so festgelegt:
- Wenn der Tabellen-Snapshot eine vorhandene Tabelle überschreibt, wird der Zugriff auf Tabellenebene für die vorhandene Tabelle beibehalten. Tags werden nicht aus der Basistabelle kopiert.
- Wenn der Tabellen-Snapshot eine neue Ressource ist, wird der Zugriff auf Tabellenebene für den Tabellen-Snapshot durch die Zugriffsrichtlinien des Datasets bestimmt, in dem der Tabellen-Snapshot erstellt wird. Außerdem werden Tags aus der Basistabelle in den Tabellen-Snapshot kopiert.
Nächste Schritte
- Beschreibung, Ablaufdatum oder Zugriffsrichtlinie eines Tabellen-Snapshots aktualisieren
- Tabellen-Snapshot wiederherstellen
- Monatliche Snapshots einer Tabelle mithilfe eines Dienstkontos erstellen, mit dem eine geplante Abfrage ausgeführt wird