Externe Spanner-Datasets erstellen
In diesem Dokument wird beschrieben, wie Sie ein externes Dataset (auch als föderiertes Dataset bezeichnet) in BigQuery erstellen, das mit einer vorhandenen Datenbank in Spanner verknüpft ist.
Ein externes Dataset ist eine Verbindung zwischen BigQuery und einer externen Datenquelle auf Datasetebene. Sie können damit transaktionale Daten in Spanner-Datenbanken mit GoogleSQL abfragen, ohne Daten von Spanner in den BigQuery-Speicher zu verschieben.
Die Tabellen in einem externen Datenpool werden automatisch aus den Tabellen in der entsprechenden externen Datenquelle ausgefüllt. Sie können diese Tabellen direkt in BigQuery abfragen, aber keine Änderungen vornehmen, etwas hinzufügen oder löschen. Alle Änderungen, die Sie in der externen Datenquelle vornehmen, werden jedoch automatisch in BigQuery übernommen.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Nutzer (roles/bigquery.user
) zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen eines externen Datasets benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigung bigquery.datasets.create
, die zum Erstellen eines externen Datasets erforderlich ist.
Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.
Externes Dataset erstellen
So erstellen Sie ein externes Dataset:
Console
Öffnen Sie in der Google Cloud Console die Seite "BigQuery".
Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.
Maximieren Sie die Option
Aktionen und klicken Sie auf Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
- Geben Sie für Dataset-ID einen eindeutigen Dataset-Namen ein.
- Wählen Sie unter Standorttyp einen Standort für das Dataset aus, z. B.
us-central1
oder mehrere Regionenus
. Nachdem Sie ein Dataset erstellt haben, kann der Speicherort nicht mehr geändert werden. Gehen Sie für Externes Dataset so vor:
- Klicken Sie auf das Kästchen neben Link zu einem externen Datensatz.
- Wählen Sie als Typ des externen Datasets die Option
Spanner
aus. - Geben Sie unter Externe Quelle die vollständige Kennung Ihrer Spanner-Datenbank im folgenden Format ein:
projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:projects/my_project/instances/my_instance/databases/my_database
. - Geben Sie unter Datenbankrolle optional den Namen einer Spanner-Datenbankrolle ein. Weitere Informationen finden Sie unter Datenbankrollen zum Erstellen von Spanner-Verbindungen.
Übernehmen Sie die anderen Einstellungen.
Klicken Sie auf Dataset erstellen.
SQL
Verwenden Sie die Datendefinitionssprachen-Anweisung (DDL) CREATE EXTERNAL SCHEMA
.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE EXTERNAL SCHEMA DATASET_NAME OPTIONS ( external_source = 'SPANNER_EXTERNAL_SOURCE', location = 'LOCATION');
Ersetzen Sie Folgendes:
DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery.SPANNER_EXTERNAL_SOURCE
: der vollständige, qualifizierte Name der Spanner-Datenbank mit einem Präfix, das die Quelle identifiziert, im folgenden Format:google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database
odergoogle-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database
.LOCATION
: der Speicherort Ihres neuen Datasets in BigQuery, z. B.us-central1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Erstellen Sie in einer Befehlszeilenumgebung mit dem Befehl bq mk
ein externes Dataset:
bq --location=LOCATION mk --dataset \ --external_source SPANNER_EXTERNAL_SOURCE \ DATASET_NAME
Ersetzen Sie Folgendes:
LOCATION
: der Speicherort Ihres neuen Datasets in BigQuery, z. B.us-central1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern. Mit der Datei.bigqueryrc
können Sie einen Standardwert für den Standort festlegen.SPANNER_EXTERNAL_SOURCE
: Der vollständige qualifizierte Name der Spanner-Datenbank mit einem Präfix, das die Quelle identifiziert, im folgenden Format:google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database
odergoogle-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database
.DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery. Wenn Sie ein Dataset in einem anderen Projekt als dem Standardprojekt erstellen möchten, fügen Sie die Projekt-ID im FormatPROJECT_ID
:DATASET_NAME
dem Dataset-Namen hinzu.
Terraform
Verwenden Sie die Ressource google_bigquery_dataset
:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird ein externes Spanner-Dataset erstellt:
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
API
Rufen Sie die Methode datasets.insert
mit einer definierten Dataset-Ressource und dem externalDatasetReference
-Feld für Ihre Spanner-Datenbank auf.
Bei den Namen der Tabellen in den externen Datasets wird die Groß-/Kleinschreibung nicht berücksichtigt.
Tabellen in einem externen Dataset auflisten
Eine Liste der Tabellen, die in Ihrem externen Dataset für Abfragen verfügbar sind, finden Sie unter Datasets auflisten.
Tabelleninformationen abrufen
Informationen zu den Tabellen in Ihrem externen Datensatz, z. B. Schemadetails, finden Sie unter Tabelleninformationen abrufen.
Zugriff auf Tabellen steuern
Externe Spanner-Datensätze unterstützen Anmeldedaten von Endnutzern. Das bedeutet, dass der Zugriff auf die Spanner-Tabellen aus externen Datensätzen von Spanner gesteuert wird. Nutzer können diese Tabellen nur abfragen, wenn sie in Spanner Zugriff erhalten haben.
Spanner-Daten abfragen
Die Abfrage von Tabellen in externen Datasets funktioniert genauso wie die Abfrage von Tabellen in anderen BigQuery-Datasets. DML-Vorgänge (Data Manipulation Language) werden jedoch nicht unterstützt.
Für Abfragen in Tabellen in externen Spanner-Datasets wird standardmäßig Data Boost verwendet. Diese Einstellung kann nicht geändert werden. Daher benötigen Sie zusätzliche Berechtigungen, um solche Abfragen auszuführen.
Ansicht in einem externen Dataset erstellen
Sie können keine Ansicht in einem externen Datensatz erstellen. Sie können jedoch eine Ansicht in einem Standard-Dataset erstellen, die auf einer Tabelle in einem externen Dataset basiert. Weitere Informationen finden Sie unter Ansichten erstellen.
Externes Dataset löschen
Das Löschen eines externen Datasets funktioniert genauso wie das Löschen eines anderen BigQuery-Datasets. Das Löschen externer Datasets hat keine Auswirkungen auf Tabellen in der Spanner-Datenbank. Weitere Informationen finden Sie unter Datasets löschen.
Beschränkungen
- Es gelten die Einschränkungen für föderierte BigQuery-Abfragen.
- In BigQuery sind nur Tabellen aus einem Standard-Spanner-Schema zugänglich. Tabellen aus Namensschemata werden nicht unterstützt.
- Wenn eine Tabelle in der Spanner-Datenbank eine Spalte eines Typs enthält, der von BigQuery nicht unterstützt wird, ist auf diese Spalte in BigQuery kein Zugriff möglich.
- In Tabellen in einem externen Spanner-Dataset können keine Daten oder Metadaten hinzugefügt, gelöscht oder aktualisiert werden.
- In einem externen Spanner-Dataset können keine neuen Tabellen, Ansichten oder materialisierten Ansichten erstellt werden.
INFORMATION_SCHEMA
-Aufrufe werden nicht unterstützt.- Metadaten-Caching wird nicht unterstützt.
- Einstellungen auf Dataset-Ebene, die sich auf Standardeinstellungen für die Tabellenerstellung beziehen, wirken sich nicht auf externe Datasets aus, da Tabellen nicht manuell erstellt werden können.
- Spanner-Datenbanken, die den PostgreSQL-Dialekt verwenden, werden nicht unterstützt.
- Write API und Read API werden nicht unterstützt.
- Sicherheit auf Zeilen- und Spaltenebene sowie Datenmaskierung werden nicht unterstützt.
- Materialisierte Ansichten, die auf Tabellen aus externen Spanner-Datasets basieren, werden nicht unterstützt.
- Die Integration mit Dataplex wird nicht unterstützt. Datenprofile und Datenqualitätsscans werden beispielsweise nicht unterstützt.
- Tags auf Tabellenebene werden nicht unterstützt.
- Die automatische Vervollständigung von SQL funktioniert bei externen Spanner-Tabellen nicht, wenn Sie Abfragen schreiben.
- Mit Schutz sensibler Daten scannen wird für externe Datasets nicht unterstützt.
- Sie können eine autorisierte Ansicht erstellen, die auf ein externes Spanner-Dataset verweist. Wenn diese Ansicht jedoch abgefragt wird, wird die EUC einer Person, die eine Abfrage ausführt, an Spanner gesendet.