In diesem Dokument wird beschrieben, wie Sie ein BigQuery-Abo erstellen. Sie können die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek oder die Pub/Sub API verwenden, um ein BigQuery-Abo zu erstellen.
Hinweise
Bevor Sie dieses Dokument lesen, sollten Sie sich mit folgenden Themen vertraut machen:
Der Workflow für BigQuery-Abos.
So konfigurieren Sie ein Thema für unzustellbare Nachrichten um Nachrichtenfehler zu beheben.
Sie sollten mit Pub/Sub und BigQuery vertraut sein und die folgenden Voraussetzungen erfüllen, bevor Sie ein BigQuery-Abo erstellen:
Es gibt eine BigQuery-Tabelle. Alternativ können Sie auch eines erstellen wenn Sie das BigQuery-Abo erstellen, wie in weiter unten in diesem Dokument.
Kompatibilität zwischen dem Schema des Pub/Sub-Themas und in der BigQuery-Tabelle. Wenn Sie ein nicht kompatibles wird ein Kompatibilitätsfehler angezeigt, . Weitere Informationen finden Sie unter Schemakompatibilität.
Erforderliche Rollen und Berechtigungen
Im Folgenden finden Sie eine Liste von Richtlinien zu Rollen und Berechtigungen:
Zum Erstellen eines Abos müssen Sie die Zugriffssteuerung im Projekt konfigurieren
Außerdem benötigen Sie Berechtigungen auf Ressourcenebene, Abos und Themen befinden sich in verschiedenen Projekten, wie später erläutert wird. in diesem Abschnitt.
Damit ein BigQuery-Abo erstellt werden kann, muss das Pub/Sub-Dienstkonto die Berechtigung zum Schreiben in die entsprechende BigQuery-Tabelle haben. Weitere Informationen zum Gewähren dieser Berechtigungen finden Sie im nächsten Abschnitt dieses Dokuments.
Sie können ein BigQuery-Abo in einem Projekt konfigurieren um in eine BigQuery-Tabelle in einem anderen Projekt zu schreiben.
Um die Berechtigungen zu erhalten, die Sie zum Erstellen von BigQuery-Abos benötigen,
bitten Sie Ihren Administrator, Ihnen
IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für das Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält Berechtigungen, die zum Erstellen von BigQuery-Abos erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen von BigQuery-Abos erforderlich:
-
Pull-Modus aus einem Abo:
pubsub.subscriptions.consume
-
Abo erstellen:
pubsub.subscriptions.create
-
So löschen Sie ein Abo:
pubsub.subscriptions.delete
-
Abo abschließen:
pubsub.subscriptions.get
-
So listen Sie ein Abo auf:
pubsub.subscriptions.list
-
So aktualisieren Sie ein Abo:
pubsub.subscriptions.update
-
So hängen Sie ein Abo an ein Thema an:
pubsub.topics.attachSubscription
-
Rufen Sie die IAM-Richtlinie für ein Abo ab:
pubsub.subscriptions.getIamPolicy
-
Konfigurieren Sie die IAM-Richtlinie für ein Abo:
pubsub.subscriptions.setIamPolicy
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Wenn Sie BigQuery erstellen müssen
Abos in einem Projekt, die mit einem Thema in einem anderen verknüpft sind
Projekt enthalten ist, bitten Sie Ihren Themenadministrator, Ihnen auch den Pub/Sub Editor zu gewähren.
Die IAM-Rolle (roles/pubsub.editor)
für das Thema.
BigQuery-Rollen dem Pub/Sub-Dienstkonto zuweisen
Einige Google Cloud-Dienste haben von Google Cloud verwaltete Dienstkonten, mit denen
Dienste auf Ihre Ressourcen zugreifen. Diese Dienstkonten werden als Dienst-Agents bezeichnet. Pub/Sub erstellt und verwaltet
Dienstkonto für jedes Projekt im Format
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
Zum Erstellen eines BigQuery-Abos Dienstkonto muss über Schreibberechtigung verfügen an die spezifische BigQuery-Tabelle an und lesen die Metadaten der Tabelle.
BigQuery-Dateneditor (roles/bigquery.dataEditor
) gewähren
dem Pub/Sub-Dienstkonto zugewiesen.
Öffnen Sie in der Google Cloud Console die Seite IAM.
Klicken Sie auf Zugriff erlauben.
Geben Sie im Abschnitt Hauptkonten hinzufügen den Namen Ihrer Pub/Sub-Ressource ein. Dienstkonto. Das Format des Dienstkontos ist
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Bei einem Projekt mitproject-number=112233445566
hat das Dienstkonto beispielsweise das Formatservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Klicken Sie im Abschnitt Rollen zuweisen auf Weitere Rolle hinzufügen.
Geben Sie im Drop-down-Menü Rolle auswählen den Wert
BigQuery
ein. und wählen Sie die Rolle BigQuery-Dateneditor aus.Klicken Sie auf Speichern.
Weitere Informationen zu BigQuery IAM Siehe BigQuery-Rollen und -Berechtigungen.
BigQuery-Aboattribute
Beim Konfigurieren eines BigQuery-Abos können Sie Folgendes angeben: Eigenschaften.
Allgemeine Eigenschaften
Weitere Informationen zu allgemeinen Abo-Properties das Sie für alle Abos festlegen können.
Schema des Themas verwenden
Mit dieser Option kann Pub/Sub das Schema des Pub/Sub-Themas an, Abo ist angehängt. Außerdem kann Pub/Sub schreibt die Felder in Nachrichten in den entsprechenden Spalten in der BigQuery-Tabelle.
Beachten Sie bei Verwendung dieser Option die folgenden zusätzlichen Anforderungen:
Die Felder im Schema des Themas und im BigQuery-Schema müssen dieselben Namen haben und ihre Typen müssen miteinander kompatibel sein.
Alle optionalen Felder im Themaschema müssen auch im BigQuery-Schema optional sein.
Pflichtfelder im Schema des Themas müssen nicht im BigQuery-Schema erforderlich.
Wenn es BigQuery-Felder gibt, die in Schema des Themas werden diese BigQuery-Felder muss sich im Modus
NULLABLE
befinden.Wenn das Schema des Themas zusätzliche Felder enthält, nicht im BigQuery-Schema vorhanden Felder entfernt werden können, wählen Sie die Option Unbekannte Felder löschen aus.
Sie können nur eine der Abo-Properties auswählen: Schema des Themas verwenden oder Tabellenschema verwenden.
Wenn Sie die Option Schema des Themas verwenden oder Tabellenschema verwenden nicht auswählen, muss die BigQuery-Tabelle eine Spalte namens data
vom Typ BYTES
, STRING
oder JSON
haben. Pub/Sub schreibt die Nachricht in
in dieser BigQuery-Spalte.
Änderungen am Pub/Sub-Themenschema oder am BigQuery-Tabellenschema werden möglicherweise nicht sofort wirksam, wenn Nachrichten in die BigQuery-Tabelle geschrieben werden. Wenn beispielsweise die Option Unbekannte Felder löschen aktiviert ist und ein Feld im Pub/Sub-Schema, aber nicht im BigQuery-Schema vorhanden ist, enthalten Nachrichten, die in die BigQuery-Tabelle geschrieben werden, das Feld möglicherweise auch dann nicht, wenn es dem BigQuery-Schema hinzugefügt wurde. Schließlich Die Schemasynchronisierung und nachfolgende Nachrichten enthalten das Feld.
Wenn Sie die Option Themenschema verwenden für Ihr BigQuery-Abo verwenden, können Sie auch BigQuery Change Data Capture (CDC) nutzen. CDC aktualisiert Ihre BigQuery-Tabellen verarbeitet und Änderungen auf vorhandene Zeilen angewendet.
Weitere Informationen zu dieser Funktion finden Sie unter Tabellenaktualisierungen mit Change Data Capture streamen.
Informationen zur Verwendung dieses Features mit BigQuery-Abos Siehe BigQuery Change Data Capture.
Schema der Tabelle verwenden
Mit dieser Option kann Pub/Sub das Schema der BigQuery-Tabelle verwenden, um die Felder einer JSON-Nachricht in die entsprechenden Spalten zu schreiben. Denken Sie bei Verwendung dieser Option daran, Prüfen Sie die folgenden zusätzlichen Anforderungen:
Veröffentlichte Nachrichten müssen im JSON-Format vorliegen.
Die folgenden JSON-Konvertierungen werden unterstützt:
JSON-Typ BigQuery-Datentyp string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oderTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oderTIMESTAMP
- Wenn Sie
number
inDATE
-,DATETIME
-,TIME
- oderTIMESTAMP
-Konvertierungen verwenden, muss die Zahl den unterstützten Darstellungen entsprechen. - Bei der Umwandlung von
number
inNUMERIC
oderBIGNUMERIC
sind Genauigkeit und Wertebereich auf die Werte beschränkt, die vom IEEE 754-Standard für Gleitkommaarithmetik akzeptiert werden. Wenn Sie eine hohe Genauigkeit oder einen größeren Wertebereich benötigen, verwenden Sie stattdessenstring
bisNUMERIC
oderBIGNUMERIC
-Conversions. - Bei der Verwendung von
string
- zuNUMERIC
- oderBIGNUMERIC
-Konvertierungen geht Pub/Sub davon aus, dass der String eine menschenlesbare Zahl ist (z.B."123.124"
). Wenn die Verarbeitung des Strings als menschenlesbare Zahl fehlschlägt, behandelt Pub/Sub den String als mit BigDecimalByteStringEncoder codierte Byte.
- Wenn Sie
Wenn das Thema des Abos ein Schema verknüpft hat, dann Die Eigenschaft für die Nachrichtencodierung muss auf
JSON
festgelegt sein.Wenn BigQuery-Felder vorhanden sind, die nicht in den Nachrichten enthalten sind, müssen diese BigQuery-Felder sich im Modus
NULLABLE
befinden.Wenn die Nachrichten zusätzliche Felder enthalten, die in der und diese Felder können gelöscht werden, wählen Sie Unbekannte Felder löschen.
Sie können nur eine der Aboeigenschaften auswählen: Themaschema verwenden oder Tabellenschema verwenden.
Wenn Sie die Option Schema des Themas verwenden oder Tabellenschema verwenden nicht auswählen,
dass die BigQuery-Tabelle
eine Spalte mit dem Namen data
Geben Sie BYTES
, STRING
oder JSON
ein. Pub/Sub schreibt die Nachricht in
in dieser BigQuery-Spalte.
Änderungen am BigQuery-Tabellenschema mit Nachrichten, die in die BigQuery-Tabelle geschrieben werden, sofort wirksam werden. Wenn beispielsweise die Option Unbekannte Felder löschen aktiviert ist und ein Feld in den Nachrichten, aber nicht im BigQuery-Schema vorhanden ist, enthalten Nachrichten, die in die BigQuery-Tabelle geschrieben werden, das Feld möglicherweise auch dann nicht, wenn es dem BigQuery-Schema hinzugefügt wurde. Schließlich Schema synchronisiert wird und nachfolgende Nachrichten das Feld enthalten.
Wenn Sie die Option Tabellenschema verwenden für Ihr BigQuery-Abo verwenden, auch Änderungsdatenerfassung (Change Data Capture, CDC) in BigQuery nutzen. CDC aktualisiert Ihre BigQuery-Tabellen, indem es Änderungen verarbeitet und auf vorhandene angewendet Zeilen.
Weitere Informationen zu dieser Funktion finden Sie unter Tabellenaktualisierungen mit Change Data Capture streamen.
Informationen zur Verwendung dieser Funktion mit BigQuery-Abos finden Sie unter Änderungsdatenerfassung in BigQuery.
Unbekannte Felder löschen
Diese Option wird mit der Option Schema des Themas verwenden oder Schema der Tabelle verwenden verwendet. Mit dieser Option kann Pub/Sub jedes im Thema vorhandene Feld löschen Schema oder Nachricht, aber nicht im BigQuery-Schema. Ohne Drop unbekannt Felder festgelegt sind, werden Nachrichten mit zusätzlichen Feldern in BigQuery und verbleiben im Rückstand des Abos. Die in einem Fehlerstatus endet.
Metadaten schreiben
Mit dieser Option kann Pub/Sub Schreiben Sie die Metadaten jeder Nachricht in zusätzliche Spalten im BigQuery-Tabelle. Andernfalls sind die Metadaten nicht in die BigQuery-Tabelle geschrieben.
Wenn Sie die Option Metadaten schreiben auswählen, muss der Die BigQuery-Tabelle enthält die in der folgenden Tabelle beschriebenen Felder.
Wenn Sie die Option Metadaten schreiben nicht auswählen, benötigt die BigQuery-Tabelle nur das Feld data
, es sei denn,
use_topic_schema
ist „wahr“. Wenn Sie sowohl Metadaten schreiben als auch
Schemaoptionen des Themas verwenden, muss das Schema des Themas
dürfen keine Felder enthalten, deren Namen mit denen der Metadatenparameter übereinstimmen.
Diese Einschränkung gilt auch für Camelcase-Versionen dieser Snake-Case-Parameter.
Parameter | |
---|---|
subscription_name |
STRING Name eines Abos. |
message_id |
STRING ID einer Nachricht |
publish_time |
TIMESTAMP Der Zeitpunkt der Veröffentlichung einer Nachricht. |
data |
BYTES, STRING oder JSON Der Nachrichtentext. Das Feld |
attributes |
STRING oder JSON Ein JSON-Objekt, das alle Nachrichtenattribute enthält. Außerdem enthält zusätzliche Felder, die Teil des Pub/Sub-Nachricht mit dem Schlüssel falls vorhanden. |
BigQuery-Abo erstellen
Die folgenden Beispiele zeigen, wie Sie ein Abo mit BigQuery-Bereitstellung erstellen.
Console
- Wechseln Sie in der Google Cloud Console zur Seite Abos:
- Klicken Sie auf Abo erstellen.
- Geben Sie im Feld Abo-ID einen Namen ein.
Informationen zum Benennen eines Abos finden Sie unter Richtlinien für die Benennung eines Themas oder Abos.
- Wählen Sie im Drop-down-Menü ein Thema aus oder erstellen Sie ein Thema. Das Abo erhält Nachrichten von diesem Thema.
- Wählen Sie als Zustellungstyp die Option Write to BigQuery
- Wählen Sie das Projekt für die BigQuery-Tabelle aus.
- Wählen Sie ein vorhandenes Dataset aus oder erstellen Sie ein neues.
Weitere Informationen Informationen zum Erstellen eines Datasets finden Sie unter Datasets erstellen.
- Wählen Sie eine vorhandene Tabelle aus oder erstellen Sie eine neue.
Weitere Informationen zu Informationen zum Erstellen einer Tabelle finden Sie unter Tabellen erstellen.
- Wir empfehlen dringend, Dead Lettering zu aktivieren, um Fehler bei der Zustellung von Nachrichten zu behandeln.
Weitere Informationen finden Sie unter Tote Fehler Thema des Briefes.
- Klicken Sie auf Erstellen.
Sie können ein Abo auch auf der Seite Themen erstellen. Diese Verknüpfung ist nützlich, um Themen mit Abos zu verknüpfen.
- Rufen Sie in der Google Cloud Console die Seite Themen auf.
- Klicken Sie neben dem Thema, für das Sie ein Abo erstellen möchten, auf more_vert.
- Wählen Sie im Kontextmenü Abo erstellen aus.
- Wählen Sie als Zustellungstyp die Option Write to BigQuery
- Wählen Sie das Projekt für die BigQuery-Tabelle aus.
- Wählen Sie ein vorhandenes Dataset aus oder erstellen Sie ein neues.
Weitere Informationen Informationen zum Erstellen eines Datasets finden Sie unter Datasets erstellen.
- Wählen Sie eine vorhandene Tabelle aus oder erstellen Sie eine neue.
Informationen zum Erstellen eines Datasets finden Sie unter Tabellen erstellen.
- Wir empfehlen dringend, die Option Unzustellbar
Buchstaben zum Umgang mit Nachrichtenfehlern.
Weitere Informationen finden Sie unter Tote Fehler Thema des Briefes.
- Klicken Sie auf Erstellen.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Verwenden Sie zum Erstellen eines Pub/Sub-Abos die
gcloud pubsub subscriptions create
Befehl:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Ersetzen Sie Folgendes:
- SUBSCRIPTION_ID: Gibt die ID der Abo.
- TOPIC_ID: Gibt die ID des Themas an. Für das Thema ist ein Schema erforderlich.
- PROJECT_ID: Gibt die ID des Projekts an.
- DATASET_ID: Gibt die ID einer vorhandenen Dataset. Informationen zum Erstellen eines Datasets finden Sie unter Erstellen Datasets.
- TABLE_ID: Gibt die ID einer vorhandenen Tabelle an. Die Tabelle benötigt ein data-Feld, wenn Ihr Thema kein Schema hat. Informationen zum Erstellen einer Tabelle finden Sie unter Leere Tabelle mit einer Schemadefinition erstellen.
C++
Folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub C++ API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
C#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C# in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub C# API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub Go API Referenzdokumentation.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Pub/Sub Java API Referenzdokumentation.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Node.js
PHP
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für PHP in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub PHP API Referenzdokumentation.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub Python API Referenzdokumentation.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub Ruby API Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
BigQuery-Abo überwachen
Cloud Monitoring bietet eine Reihe von Messwerten, Abos überwachen.
Eine Liste aller verfügbaren Messwerte im Zusammenhang mit Pub/Sub und deren Beschreibungen Monitoring-Dokumentation für Pub/Sub
Sie können Abos auch in Pub/Sub überwachen.
Nächste Schritte
- Erstellen oder ändern Sie ein Abo mit
gcloud
-Befehlen. - Abo mit REST APIs erstellen oder ändern
- Fehlerbehebung bei einem BigQuery-Abo