Membuat langganan BigQuery

Dokumen ini menjelaskan cara membuat langganan BigQuery. Anda dapat menggunakan konsol Google Cloud, Google Cloud CLI, library klien, atau Pub/Sub API untuk membuat langganan BigQuery.

Sebelum memulai

Sebelum membaca dokumen ini, pastikan Anda sudah memahami hal-hal berikut:

Selain pemahaman Pub/Sub dan BigQuery, pastikan Anda memenuhi prasyarat berikut sebelum membuat langganan BigQuery:

  • Tabel BigQuery sudah ada. Atau, Anda dapat membuatnya saat membuat langganan BigQuery seperti yang dijelaskan di bagian selanjutnya dari dokumen ini.

  • Kompatibilitas antara skema topik Pub/Sub dan tabel BigQuery. Jika menambahkan tabel BigQuery yang tidak kompatibel, Anda akan mendapatkan pesan error terkait kompatibilitas. Untuk mengetahui informasi selengkapnya, lihat Kompatibilitas skema.

Peran dan izin yang diperlukan

Berikut adalah daftar panduan mengenai peran dan izin:

  • Untuk membuat langganan, Anda harus mengonfigurasi kontrol akses pada level project.

  • Anda juga memerlukan izin level resource jika langganan dan topik Anda berada dalam project yang berbeda, seperti yang akan dibahas nanti di bagian ini.

  • Untuk membuat langganan BigQuery, akun layanan Pub/Sub harus memiliki izin untuk menulis ke tabel BigQuery tertentu. Untuk informasi selengkapnya tentang cara memberikan izin ini, lihat bagian berikutnya dalam dokumen ini.

  • Anda dapat mengonfigurasi langganan BigQuery di project untuk menulis ke tabel BigQuery di project berbeda.

Untuk mendapatkan izin yang diperlukan untuk membuat langganan BigQuery, minta administrator untuk memberi Anda peran IAM Pub/Sub Editor (roles/pubsub.editor) pada project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat langganan BigQuery. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat langganan BigQuery:

  • Mengambil dari langganan: pubsub.subscriptions.consume
  • Buat langganan: pubsub.subscriptions.create
  • Menghapus langganan: pubsub.subscriptions.delete
  • Dapatkan langganan: pubsub.subscriptions.get
  • Cantumkan langganan: pubsub.subscriptions.list
  • Memperbarui langganan: pubsub.subscriptions.update
  • Melampirkan langganan ke topik: pubsub.topics.attachSubscription
  • Mendapatkan kebijakan IAM untuk langganan: pubsub.subscriptions.getIamPolicy
  • Konfigurasi kebijakan IAM untuk langganan: pubsub.subscriptions.setIamPolicy

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Jika Anda perlu membuat langganan BigQuery dalam satu project yang dikaitkan dengan topik di project lain, minta administrator topik Anda untuk memberi Anda peran IAM Pub/Sub Editor (roles/pubsub.editor) pada topik tersebut.

Menetapkan peran BigQuery ke akun layanan Pub/Sub

Beberapa layanan Google Cloud memiliki akun layanan yang dikelola Google Cloud yang memungkinkan layanan tersebut mengakses resource Anda. Akun layanan ini dikenal sebagai agen layanan. Pub/Sub membuat dan mengelola akun layanan untuk setiap project dalam format service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com.

Untuk membuat langganan BigQuery, akun layanan Pub/Sub harus memiliki izin untuk menulis ke tabel BigQuery tertentu dan membaca metadata tabel.

Berikan peran Editor Data BigQuery (roles/bigquery.dataEditor) ke akun layanan Pub/Sub.

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Klik Grant access.

  3. Di bagian Tambahkan Akun Utama, masukkan nama akun layanan Pub/Sub Anda. Format akun layanan adalah service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com. Misalnya, untuk project dengan project-number=112233445566, akun layanan memiliki format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Di bagian Tetapkan Peran, klik Tambahkan peran lain.

  5. Di drop-down Select a role, masukkan BigQuery, lalu pilih BigQuery Data Editor role.

  6. Klik Save.

Untuk mengetahui informasi selengkapnya tentang IAM BigQuery, lihat Peran dan izin BigQuery.

Properti langganan BigQuery

Saat mengonfigurasi langganan BigQuery, Anda dapat menentukan properti berikut.

Properti umum

Pelajari properti langganan umum yang dapat Anda tetapkan di semua langganan.

Gunakan skema topik

Opsi ini memungkinkan Pub/Sub menggunakan skema topik Pub/Sub yang menyertakan langganan. Selain itu, Pub/Sub menulis kolom dalam pesan ke kolom yang sesuai di tabel BigQuery.

Saat Anda menggunakan opsi ini, jangan lupa untuk memeriksa persyaratan tambahan berikut:

  • Kolom dalam skema topik dan skema BigQuery harus memiliki nama yang sama dan jenisnya harus kompatibel satu sama lain.

  • Setiap kolom opsional dalam skema topik juga harus bersifat opsional dalam skema BigQuery.

  • Kolom wajib dalam skema topik tidak perlu diwajibkan dalam skema BigQuery.

  • Jika ada kolom BigQuery yang tidak ada dalam skema topik, kolom BigQuery ini harus dalam mode NULLABLE.

  • Jika skema topik memiliki kolom tambahan yang tidak ada dalam skema BigQuery dan kolom tersebut dapat dihapus, pilih opsi Hapus kolom yang tidak dikenal.

  • Anda hanya dapat memilih salah satu properti langganan, yaitu Use topic schema atau Use table schema.

Jika Anda tidak memilih opsi Use topic schema atau Use table schema, pastikan tabel BigQuery memiliki kolom bernama data dari jenis BYTES, STRING, atau JSON. Pub/Sub menulis pesan ke kolom BigQuery ini.

Anda mungkin tidak melihat perubahan pada skema topik Pub/Sub atau skema tabel BigQuery langsung diterapkan dengan pesan yang ditulis ke tabel BigQuery. Misalnya, jika opsi Drop unknown fields diaktifkan dan sebuah kolom ada dalam skema Pub/Sub, tapi bukan dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih belum berisi kolom tersebut setelah menambahkannya ke skema BigQuery. Akhirnya, skema akan disinkronkan dan pesan berikutnya menyertakan kolom tersebut.

Saat menggunakan opsi Gunakan skema topik untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan (CDC). CDC memperbarui tabel BigQuery Anda dengan memproses dan menerapkan perubahan pada baris yang ada.

Untuk mempelajari fitur ini lebih lanjut, lihat Lakukan pembaruan tabel streaming dengan pengambilan data perubahan.

Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.

Gunakan skema tabel

Dengan opsi ini, Pub/Sub dapat menggunakan skema tabel BigQuery untuk menulis kolom pesan JSON ke kolom yang sesuai. Saat Anda menggunakan opsi ini, jangan lupa untuk memeriksa persyaratan tambahan berikut:

  • Pesan yang dipublikasikan harus dalam format JSON.

  • Jika topik langganan memiliki skema yang terkait dengannya, properti encoding pesan harus ditetapkan ke JSON.

  • Jika ada kolom BigQuery yang tidak ada dalam pesan, kolom BigQuery ini harus berada dalam mode NULLABLE.

  • Jika pesan memiliki kolom tambahan yang tidak ada dalam skema BigQuery dan kolom ini dapat dihapus, pilih opsi Hapus kolom yang tidak dikenal.

  • Dalam pesan JSON, nilai DATE, DATETIME, TIME, dan TIMESTAMP harus berupa bilangan bulat yang mematuhi representasi yang didukung.

  • Dalam pesan JSON, nilai NUMERIC dan BIGNUMERIC harus dienkode byte menggunakan BigDecimalByteStringEncoder.

  • Anda hanya dapat memilih salah satu properti langganan, yaitu Use topic schema atau Use table schema.

Jika Anda tidak memilih opsi Use topic schema atau Use table schema, pastikan tabel BigQuery memiliki kolom bernama data dari jenis BYTES, STRING, atau JSON. Pub/Sub menulis pesan ke kolom BigQuery ini.

Anda mungkin tidak melihat perubahan pada skema tabel BigQuery yang langsung diterapkan pada pesan yang ditulis ke tabel BigQuery. Misalnya, jika opsi Hapus kolom yang tidak dikenal diaktifkan dan sebuah kolom ada dalam pesan, tetapi tidak ada dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih belum berisi kolom tersebut setelah menambahkannya ke skema BigQuery. Akhirnya, skema akan disinkronkan dan pesan berikutnya menyertakan kolom tersebut.

Saat menggunakan opsi Gunakan skema tabel untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan (CDC) BigQuery. CDC memperbarui tabel BigQuery Anda dengan memproses dan menerapkan perubahan pada baris yang ada.

Untuk mempelajari fitur ini lebih lanjut, lihat Lakukan pembaruan tabel streaming dengan pengambilan data perubahan.

Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.

Menghapus kolom yang tidak dikenal

Opsi ini digunakan dengan opsi Gunakan skema topik atau Gunakan skema tabel. Dengan opsi ini, Pub/Sub dapat menghapus kolom apa pun yang ada dalam skema atau pesan topik, tetapi tidak ada dalam skema BigQuery. Tanpa menetapkan Drop knowns fields, pesan dengan kolom tambahan tidak akan ditulis ke BigQuery dan tetap berada dalam backlog langganan. Langganan akan berakhir dalam status error.

Menulis metadata

Dengan opsi ini, Pub/Sub dapat menulis metadata setiap pesan ke kolom tambahan di tabel BigQuery. Selain itu, {i>metadata <i}tidak ditulis ke tabel BigQuery.

Jika Anda memilih opsi Tulis metadata, pastikan tabel BigQuery memiliki kolom yang dijelaskan dalam tabel berikut.

Jika Anda tidak memilih opsi Write metadata, tabel BigQuery tujuan hanya memerlukan kolom data kecuali jika use_topic_schema bernilai benar (true). Jika Anda memilih opsi Write metadata dan Use topic schema, skema topik tidak boleh berisi kolom apa pun dengan nama yang cocok dengan parameter metadata. Batasan ini mencakup versi camelcase dari parameter snake case ini.

Parameter
subscription_name

STRING

Nama langganan.

message_id

STRING

ID pesan

publish_time

TIMESTAMP

Waktu publikasi pesan.

data

myactivity, STRING, atau JSON

Isi pesan.

Kolom data wajib ada untuk semua tabel BigQuery tujuan yang tidak memilih Use topic schema. Jika kolom berjenis JSON, isi pesan harus berupa JSON yang valid.

attributes

STRING atau JSON

Objek JSON yang berisi semua atribut pesan. Objek ini juga berisi kolom tambahan yang merupakan bagian dari pesan Pub/Sub, termasuk kunci pengurutan, jika ada.

Membuat langganan BigQuery

Contoh berikut menunjukkan cara membuat langganan dengan pengiriman BigQuery.

Konsol

  1. Di konsol Google Cloud, buka halaman Langganan.

    Buka Langganan

  2. Klik Buat langganan.
  3. Untuk kolom ID Langganan, masukkan nama.

    Untuk informasi tentang cara menamai langganan, lihat Panduan menamai topik atau langganan.

  4. Pilih atau buat topik dari menu drop-down. Langganan akan menerima pesan dari topik.
  5. Pilih Delivery type sebagai Write to BigQuery.
  6. Pilih project untuk tabel BigQuery.
  7. Pilih set data yang ada atau buat set data baru.

    Untuk mengetahui informasi cara membuat set data, lihat Membuat set data.

  8. Pilih tabel yang ada atau buat yang baru.

    Untuk informasi cara membuat tabel, lihat Membuat tabel.

  9. Sebaiknya aktifkan Penghentian penulisan untuk menangani kegagalan pesan.

    Untuk mengetahui informasi selengkapnya, lihat Topik yang dihentikan pengirimannya.

  10. Klik Create.

Anda juga dapat membuat langganan dari halaman Topics. Pintasan ini berguna untuk mengaitkan topik dengan langganan.

  1. Di konsol Google Cloud, buka halaman Topics.

    Buka Topics

  2. Klik di samping topik yang langganannya ingin Anda buat.
  3. Dari menu konteks, pilih Buat langganan.
  4. Pilih Delivery type sebagai Write to BigQuery.
  5. Pilih project untuk tabel BigQuery.
  6. Pilih set data yang ada atau buat set data baru.

    Untuk mengetahui informasi cara membuat set data, lihat Membuat set data.

  7. Pilih tabel yang ada atau buat yang baru.

    Untuk informasi cara membuat set data, lihat Membuat tabel.

  8. Sebaiknya aktifkan Penghentian penulisan untuk menangani kegagalan pesan.

    Untuk mengetahui informasi selengkapnya, lihat Topik yang dihentikan pengirimannya.

  9. Klik Create.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Untuk membuat langganan Pub/Sub, gunakan perintah gcloud pubsub subscriptions create:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID \
        --topic=TOPIC_ID \
        --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID

    Ganti kode berikut:

    • SUBSCRIPTION_ID: Menentukan ID langganan.
    • TOPIC_ID: Menentukan ID topik. Topik ini memerlukan skema.
    • PROJECT_ID: Menentukan ID project.
    • DATASET_ID: Menentukan ID set data yang ada. Untuk membuat set data, lihat Membuat set data.
    • TABLE_ID: Menentukan ID tabel yang ada. Tabel ini memerlukan kolom data jika topik Anda tidak memiliki skema. Untuk membuat tabel, lihat Membuat tabel kosong dengan definisi skema.

C++

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API C++ Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.


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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.

Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Langkah selanjutnya