BigQuery-Abos erstellen

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:

Neben Ihrer Vertrautheit mit Pub/Sub und Voraussetzungen für BigQuery erfüllen bevor Sie ein BigQuery-Abo erstellen:

  • Eine BigQuery-Tabelle ist vorhanden. 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, angezeigt. Weitere Informationen finden Sie unter Schemakompatibilität.

Erforderliche Rollen und Berechtigungen

Im Folgenden finden Sie eine Liste mit Richtlinien in Bezug auf 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.

  • Zum Erstellen eines BigQuery-Abos Das Pub/Sub-Dienstkonto muss die Berechtigung zum Schreiben in den bestimmte BigQuery-Tabelle. Weitere Informationen zur diese Berechtigungen erteilen, 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 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 verwenden, bitten Sie Ihren Themenadministrator, Ihnen auch den Pub/Sub Editor zu gewähren. Die IAM-Rolle (roles/pubsub.editor) für das Thema.

Pub/Sub-Dienstkonto BigQuery-Rollen zuweisen

Einige Google Cloud-Dienste haben von Google Cloud verwaltete Dienstkonten, mit denen Dienste auf Ihre Ressourcen zugreifen. Diese Dienstkonten sind die sogenannten „Kundenservicemitarbeiter“. 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.

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Klicken Sie auf Zugriff erlauben.

  3. 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 mit project-number=112233445566 hat das Dienstkonto beispielsweise das Format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Klicken Sie im Abschnitt Rollen zuweisen auf Weitere Rolle hinzufügen.

  5. Geben Sie im Drop-down-Menü Rolle auswählen den Wert BigQuery ein. und wählen Sie die Rolle BigQuery-Dateneditor aus.

  6. Klicken Sie auf Speichern.

Weitere Informationen zu BigQuery IAM Siehe BigQuery-Rollen und -Berechtigungen.

BigQuery-Aboattribute

Bei der Konfiguration 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.

  • Jedes optionale Feld im Schema des Themas muss ebenfalls optional im BigQuery-Schema.

  • 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 können gelöscht werden, 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, dass die BigQuery-Tabelle eine Spalte mit dem Namen data Geben Sie BYTES, STRING oder JSON ein. Pub/Sub schreibt die Nachricht in diese BigQuery-Spalte.

Änderungen am Schema der Pub/Sub-Themen oder BigQuery-Tabellenschema tritt sofort mit Nachrichten in Kraft in die BigQuery-Tabelle geschrieben. Wenn zum Beispiel die Drop-down- die Option „Unbekannte Felder“ aktiviert ist und ein Feld in der Pub/Sub-Schema, aber nicht das BigQuery-Schema, Nachrichten, die in die BigQuery-Tabelle geschrieben wurden, enthalten möglicherweise nachdem es dem BigQuery-Schema hinzugefügt wurde. Schließlich Die Schemasynchronisierung und nachfolgende Nachrichten enthalten das Feld.

Wenn Sie die Option Schema des Themas verwenden für Ihre BigQuery-Datei verwenden können Sie auch die Vorteile der BigQuery-Änderung Data Capture (CDC). 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 des BigQuery-Tabelle zum Schreiben der Felder einer JSON-Datei in die entsprechenden Spalten ein. Denken Sie bei Verwendung dieser Option daran, Prüfen Sie die folgenden zusätzlichen Anforderungen:

  • Veröffentlichte Nachrichten müssen im JSON-Format vorliegen.

  • Wenn das Thema des Abos ein Schema verknüpft hat, dann Die Eigenschaft für die Nachrichtencodierung muss auf JSON festgelegt sein.

  • Wenn es BigQuery-Felder gibt, die in müssen diese BigQuery-Felder im Modus NULLABLE sein.

  • 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.

  • In der JSON-Nachricht die Werte DATE, DATETIME, TIME und TIMESTAMP müssen Ganzzahlen sein, die den unterstützten Darstellungen entsprechen.

  • In der JSON-Nachricht müssen die Werte NUMERIC und BIGNUMERIC in Bytes mit der Methode BigDecimalByteStringEncoder.

  • 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, 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 die zwar in den Nachrichten vorhanden sind, aber nicht im BigQuery-Schema, Nachrichten, die in die BigQuery-Tabelle geschrieben wurden, enthalten möglicherweise nachdem 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 dem Feld Schema des Themas verwenden oder Tabellenschema verwenden verwendet. Option. 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 data ist für alle Ziele erforderlich BigQuery-Tabellen, die nicht die Option Verwenden Schema des Themas oder Tabellenschema verwenden. Wenn die vom Typ JSON ist, muss der Nachrichtentext gültigen JSON-Code.

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

  1. Wechseln Sie in der Google Cloud Console zur Seite Abos:

    Gehe zu Abos

  2. Klicken Sie auf Abo erstellen.
  3. Geben Sie im Feld Abo-ID einen Namen ein.

    Für Informationen zur Benennung von Abos findest du unter Richtlinien für die Benennung von Abos ein Thema oder ein Abo.

  4. Wählen Sie im Drop-down-Menü ein Thema aus oder erstellen Sie ein Thema. Das Abo Nachrichten von diesem Thema erhält.
  5. Wählen Sie als Zustellungstyp die Option Write to BigQuery
  6. Wählen Sie das Projekt für die BigQuery-Tabelle aus.
  7. Wählen Sie ein vorhandenes Dataset aus oder erstellen Sie ein neues.

    Weitere Informationen Informationen zum Erstellen eines Datasets finden Sie unter Datasets erstellen.

  8. Wählen Sie eine vorhandene Tabelle aus oder erstellen Sie eine neue.

    Informationen zur Informationen zum Erstellen einer Tabelle finden Sie unter Tabellen erstellen.

  9. Wir empfehlen dringend, die Option Unzustellbar Buchstaben zum Umgang mit Nachrichtenfehlern.

    Weitere Informationen finden Sie unter Tote Fehler Thema des Briefes.

  10. Klicken Sie auf Erstellen.

Sie können ein Abo auch über die Seite Themen erstellen. Diese Verknüpfung ist nützlich, um Themen mit Abos zu verknüpfen.

  1. Rufen Sie in der Google Cloud Console die Seite Topics (Themen) auf. Seite.

    Gehe zu Themen

  2. Klicken Sie neben dem gewünschten Thema auf . um ein Abo zu erstellen.
  3. Wählen Sie im Kontextmenü Abo erstellen aus.
  4. Wählen Sie als Zustellungstyp die Option Write to BigQuery
  5. Wählen Sie das Projekt für die BigQuery-Tabelle aus.
  6. Wählen Sie ein vorhandenes Dataset aus oder erstellen Sie ein neues.

    Weitere Informationen Datasets erstellen

  7. Wählen Sie eine vorhandene Tabelle aus oder erstellen Sie eine neue.

    Informationen zur Informationen zum Erstellen eines Datasets finden Sie unter Tabellen erstellen.

  8. Wir empfehlen dringend, die Option Unzustellbar Buchstaben zum Umgang mit Nachrichtenfehlern.

    Weitere Informationen finden Sie unter Tote Fehler Thema der Briefe.

  9. Klicken Sie auf Erstellen.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. 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. Die Thema erfordert ein Schema.
    • 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 erfordert ein data-Feld, wenn Ihr Thema kein Schema. Informationen zum Erstellen einer Tabelle finden Sie unter Tabelle erstellen Eine leere Tabelle mit einer Schemadefinition.

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 Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

namespace pubsub = ::google::cloud::pubsub;
namespace pubsub_admin = ::google::cloud::pubsub_admin;
[](pubsub_admin::SubscriptionAdminClient client,
   std::string const& project_id, std::string const& topic_id,
   std::string const& subscription_id, std::string const& table_id) {
  google::pubsub::v1::Subscription request;
  request.set_name(
      pubsub::Subscription(project_id, subscription_id).FullName());
  request.set_topic(pubsub::Topic(project_id, topic_id).FullName());
  request.mutable_bigquery_config()->set_table(table_id);
  auto sub = client.CreateSubscription(request);
  if (!sub) {
    if (sub.status().code() == google::cloud::StatusCode::kAlreadyExists) {
      std::cout << "The subscription already exists\n";
      return;
    }
    throw std::move(sub).status();
  }

  std::cout << "The subscription was successfully created: "
            << sub->DebugString() << "\n";
}

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 Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


using Google.Cloud.PubSub.V1;

public class CreateBigQuerySubscriptionSample
{
    public Subscription CreateBigQuerySubscription(string projectId, string topicId, string subscriptionId, string bigqueryTableId)
    {
        SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
        TopicName topicName = TopicName.FromProjectTopic(projectId, topicId);
        SubscriptionName subscriptionName = SubscriptionName.FromProjectSubscription(projectId, subscriptionId);

        var subscriptionRequest = new Subscription
        {
            SubscriptionName = subscriptionName,
            TopicAsTopicName = topicName,
            BigqueryConfig = new BigQueryConfig
            {
                Table = bigqueryTableId
            }
        };
        var subscription = subscriber.CreateSubscription(subscriptionRequest);
        return subscription;
    }
}

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Schnellstart mit Clientbibliotheken. 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.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

// createBigQuerySubscription creates a Pub/Sub subscription that exports messages to BigQuery.
func createBigQuerySubscription(w io.Writer, projectID, subID string, topic *pubsub.Topic, table string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
	// table := "my-project-id.dataset_id.table_id"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %w", err)
	}
	defer client.Close()

	sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
		Topic: topic,
		BigQueryConfig: pubsub.BigQueryConfig{
			Table:         table,
			WriteMetadata: true,
		},
	})
	if err != nil {
		return fmt.Errorf("client.CreateSubscription: %w", err)
	}
	fmt.Fprintf(w, "Created BigQuery subscription: %v\n", sub)

	return nil
}

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Schnellstart mit Clientbibliotheken. 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.

import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
import com.google.pubsub.v1.BigQueryConfig;
import com.google.pubsub.v1.ProjectSubscriptionName;
import com.google.pubsub.v1.ProjectTopicName;
import com.google.pubsub.v1.Subscription;
import java.io.IOException;

public class CreateBigQuerySubscriptionExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String topicId = "your-topic-id";
    String subscriptionId = "your-subscription-id";
    String bigqueryTableId = "your-project.your-dataset.your-table";

    createBigQuerySubscription(projectId, topicId, subscriptionId, bigqueryTableId);
  }

  public static void createBigQuerySubscription(
      String projectId, String topicId, String subscriptionId, String bigqueryTableId)
      throws IOException {
    try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {

      ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
      ProjectSubscriptionName subscriptionName =
          ProjectSubscriptionName.of(projectId, subscriptionId);

      BigQueryConfig bigqueryConfig =
          BigQueryConfig.newBuilder().setTable(bigqueryTableId).setWriteMetadata(true).build();

      Subscription subscription =
          subscriptionAdminClient.createSubscription(
              Subscription.newBuilder()
                  .setName(subscriptionName.toString())
                  .setTopic(topicName.toString())
                  .setBigqueryConfig(bigqueryConfig)
                  .build());

      System.out.println("Created a BigQuery subscription: " + subscription.getAllFields());
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID';
// const bigqueryTableId = 'YOUR_TABLE_ID';

// Imports the Google Cloud client library
const {PubSub} = require('@google-cloud/pubsub');

// Creates a client; cache this for further use
const pubSubClient = new PubSub();

async function createBigQuerySubscription(
  topicNameOrId,
  subscriptionNameOrId,
  bigqueryTableId
) {
  const options = {
    bigqueryConfig: {
      table: bigqueryTableId,
      writeMetadata: true,
    },
  };

  await pubSubClient
    .topic(topicNameOrId)
    .createSubscription(subscriptionNameOrId, options);

  console.log(`Subscription ${subscriptionNameOrId} created.`);
}

Node.js

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID';
// const bigqueryTableId = 'YOUR_TABLE_ID';

// Imports the Google Cloud client library
import {PubSub, CreateSubscriptionOptions} from '@google-cloud/pubsub';

// Creates a client; cache this for further use
const pubSubClient = new PubSub();

async function createBigQuerySubscription(
  topicNameOrId: string,
  subscriptionNameOrId: string,
  bigqueryTableId: string
) {
  const options: CreateSubscriptionOptions = {
    bigqueryConfig: {
      table: bigqueryTableId,
      writeMetadata: true,
    },
  };

  await pubSubClient
    .topic(topicNameOrId)
    .createSubscription(subscriptionNameOrId, options);

  console.log(`Subscription ${subscriptionNameOrId} created.`);
}

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.

use Google\Cloud\PubSub\PubSubClient;
use Google\Cloud\PubSub\V1\BigQueryConfig;

/**
 * Creates a Pub/Sub BigQuery subscription.
 *
 * @param string $projectId  The Google project ID.
 * @param string $topicName  The Pub/Sub topic name.
 * @param string $subscriptionName  The Pub/Sub subscription name.
 * @param string $table      The BigQuery table to which to write.
 */
function create_bigquery_subscription($projectId, $topicName, $subscriptionName, $table)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $topic = $pubsub->topic($topicName);
    $subscription = $topic->subscription($subscriptionName);
    $config = new BigQueryConfig(['table' => $table]);
    $subscription->create([
        'bigqueryConfig' => $config
    ]);

    printf('Subscription created: %s' . PHP_EOL, $subscription->name());
}

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.

from google.cloud import pubsub_v1

# TODO(developer)
# project_id = "your-project-id"
# topic_id = "your-topic-id"
# subscription_id = "your-subscription-id"
# bigquery_table_id = "your-project.your-dataset.your-table"

publisher = pubsub_v1.PublisherClient()
subscriber = pubsub_v1.SubscriberClient()
topic_path = publisher.topic_path(project_id, topic_id)
subscription_path = subscriber.subscription_path(project_id, subscription_id)

bigquery_config = pubsub_v1.types.BigQueryConfig(
    table=bigquery_table_id, write_metadata=True
)

# Wrap the subscriber in a 'with' block to automatically call close() to
# close the underlying gRPC channel when done.
with subscriber:
    subscription = subscriber.create_subscription(
        request={
            "name": subscription_path,
            "topic": topic_path,
            "bigquery_config": bigquery_config,
        }
    )

print(f"BigQuery subscription created: {subscription}.")
print(f"Table for subscription is: {bigquery_table_id}")

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 Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

require "google/cloud/pubsub"

##
# Shows how to create a BigQuery subscription where messages published
# to a topic populates a BigQuery table.
#
# @param project_id [String]
# Your Google Cloud project (e.g. "my-project")
# @param topic_id [String]
# Your topic name (e.g. "my-secret")
# @param subscription_id [String]
# ID for new subscription to be created (e.g. "my-subscription")
# @param bigquery_table_id [String]
# ID of bigquery table (e.g "my-project:dataset-id.table-id")
#
def pubsub_create_bigquery_subscription project_id:, topic_id:, subscription_id:, bigquery_table_id:
  pubsub = Google::Cloud::Pubsub.new project_id: project_id
  topic = pubsub.topic topic_id
  subscription = topic.subscribe subscription_id,
                                 bigquery_config: {
                                   table: bigquery_table_id,
                                   write_metadata: true
                                 }
  puts "BigQuery subscription created: #{subscription_id}."
  puts "Table for subscription is: #{bigquery_table_id}"
end

Nächste Schritte