Template PostgreSQL ke BigQuery

Template PostgreSQL ke BigQuery adalah pipeline batch yang menyalin data dari tabel PostgreSQL ke dalam tabel BigQuery yang sudah ada. Pipeline ini menggunakan JDBC untuk terhubung ke PostgreSQL. Sebagai lapisan perlindungan tambahan, Anda juga dapat meneruskan kunci Cloud KMS bersama dengan nama pengguna, sandi, dan parameter string koneksi yang dienkode menggunakan Base64 yang dienkripsi dengan kunci Cloud KMS. Untuk mengetahui informasi selengkapnya tentang enkripsi nama pengguna, sandi, dan parameter string koneksi Anda, lihat endpoint enkripsi Cloud KMS API.

Persyaratan pipeline

  • Tabel BigQuery harus ada sebelum eksekusi pipeline.
  • Tabel BigQuery harus memiliki skema yang kompatibel.
  • Database relasional harus dapat diakses dari subnet tempat Dataflow berjalan.

Parameter template

Parameter Deskripsi
connectionURL String URL koneksi JDBC. Misalnya, jdbc:postgresql://some-host:5432/sampledb. Anda dapat meneruskan nilai ini sebagai string yang dienkripsi dengan kunci Cloud KMS lalu berenkode Base64. Menghapus karakter spasi kosong dari string berenkode Base64.
outputTable Lokasi tabel output BigQuery, dalam format <my-project>:<my-dataset>.<my-table>.
bigQueryLoadingTemporaryDirectory Direktori sementara untuk proses pemuatan BigQuery. Misalnya, gs://<my-bucket>/my-files/temp_dir.
query Kueri yang akan dijalankan pada sumber untuk mengekstrak data. Misalnya, select * from sampledb.sample_table. Diperlukan jika tidak menggunakan partisi.
table Tabel yang datanya akan diekstrak. Parameter ini juga menerima subkueri di dalam tanda kurung. Misalnya Person atau (select id, name from Person) as subq. Diperlukan saat menggunakan partisi.
partitionColumn Nama kolom yang akan digunakan untuk partisi. Hanya kolom numerik yang didukung. Diperlukan saat menggunakan partisi.
connectionProperties Opsional: String properti yang akan digunakan untuk koneksi JDBC. Format string harus [propertyName=property;]*. Contoh, connectTimeout=60;socketTimeout=600. Untuk mengetahui informasi selengkapnya, lihat Parameter Koneksi dalam dokumentasi PostgreSQL.
username Opsional: Nama pengguna yang akan digunakan untuk koneksi JDBC. Anda dapat meneruskan nilai ini yang dienkripsi oleh kunci Cloud KMS sebagai string berenkode Base64.
password Opsional: Sandi yang akan digunakan untuk koneksi JDBC. Anda dapat meneruskan nilai ini yang dienkripsi oleh kunci Cloud KMS sebagai string berenkode Base64.
KMSEncryptionKey Opsional: Kunci enkripsi Cloud KMS yang akan digunakan untuk mendekripsi nama pengguna, sandi, dan string koneksi. Jika meneruskan kunci Cloud KMS, Anda juga harus mengenkripsi nama pengguna, sandi, dan string koneksi.
numPartitions Opsional: Jumlah partisi yang akan digunakan. Jika tidak ditentukan, angka konservatif akan diasumsikan oleh pekerja.
disabledAlgorithms Opsional: Algoritma yang dipisahkan koma yang akan dinonaktifkan. Jika nilai ini disetel ke none, tidak ada algoritma yang dinonaktifkan. Gunakan parameter ini dengan hati-hati, karena algoritma yang dinonaktifkan secara default mungkin memiliki masalah kerentanan atau performa. Contoh: SSLv3, RC4.
extraFilesToStage Jalur Cloud Storage yang dipisahkan koma atau rahasia Secret Manager untuk file yang akan di-stage di worker. File ini disimpan di direktori /extra_files di setiap pekerja. Contoh, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the PostgreSQL to BigQuery template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/PostgreSQL_to_BigQuery \
    --parameters \
connectionURL=JDBC_CONNECTION_URL,\
query=SOURCE_SQL_QUERY,\
outputTable=PROJECT_ID:DATASET.TABLE_NAME,
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\
connectionProperties=CONNECTION_PROPERTIES,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

Ganti kode berikut:

  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • JDBC_CONNECTION_URL: URL koneksi JDBC
  • SOURCE_SQL_QUERY: kueri SQL yang akan dijalankan pada database sumber
  • DATASET: set data BigQuery Anda
  • TABLE_NAME: nama tabel BigQuery Anda
  • PATH_TO_TEMP_DIR_ON_GCS: jalur Cloud Storage Anda ke direktori sementara
  • CONNECTION_PROPERTIES: properti koneksi JDBC, jika diperlukan
  • CONNECTION_USERNAME: nama pengguna koneksi JDBC
  • CONNECTION_PASSWORD: sandi koneksi JDBC
  • KMS_ENCRYPTION_KEY: kunci enkripsi Cloud KMS

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
  "launchParameter": {
    "jobName": "JOB_NAME",
    "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/PostgreSQL_to_BigQuery"
    "parameters": {
      "connectionURL": "JDBC_CONNECTION_URL",
      "query": "SOURCE_SQL_QUERY",
      "outputTable": "PROJECT_ID:DATASET.TABLE_NAME",
      "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS",
      "connectionProperties": "CONNECTION_PROPERTIES",
      "username": "CONNECTION_USERNAME",
      "password": "CONNECTION_PASSWORD",
      "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
    },
    "environment": { "zone": "us-central1-f" }
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • JDBC_CONNECTION_URL: URL koneksi JDBC
  • SOURCE_SQL_QUERY: kueri SQL yang akan dijalankan pada database sumber
  • DATASET: set data BigQuery Anda
  • TABLE_NAME: nama tabel BigQuery Anda
  • PATH_TO_TEMP_DIR_ON_GCS: jalur Cloud Storage Anda ke direktori sementara
  • CONNECTION_PROPERTIES: properti koneksi JDBC, jika diperlukan
  • CONNECTION_USERNAME: nama pengguna koneksi JDBC
  • CONNECTION_PASSWORD: sandi koneksi JDBC
  • KMS_ENCRYPTION_KEY: kunci enkripsi Cloud KMS

Langkah selanjutnya