Mengekspor data ke Spanner (balik ETL)

Untuk memberikan masukan atau meminta dukungan terkait fitur ini, kirim email ke bq-cloud-spanner-federation-preview@google.com.

Dokumen ini menjelaskan cara menyiapkan alur kerja ekstrak, transformasi, dan pemuatan (reverse ETL) dari BigQuery ke Spanner. Anda dapat melakukannya dengan menggunakan pernyataan EXPORT DATA untuk mengekspor data dari tabel BigQuery ke tabel Spanner.

Alur kerja ETL terbalik ini menggabungkan kemampuan analisis di BigQuery dengan latensi rendah dan throughput tinggi di Spanner. Alur kerja ini memungkinkan Anda menyalurkan data kepada pengguna aplikasi tanpa menghabiskan kuota dan batasan di BigQuery.

Sebelum memulai

Peran yang diperlukan

Agar mendapatkan izin yang diperlukan untuk mengekspor data BigQuery ke Spanner, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran bawaan lainnya.

Batasan

Jenis data BigQuery berikut tidak memiliki padanan di Spanner dan tidak didukung:

Dialek database Spanner Jenis BigQuery yang tidak didukung
Semua dialek
  • STRUCT
  • GEOGRAPHY
  • DATETIME
  • RANGE
  • TIME
GoogleSQL
  • BIGNUMERIC: Jenis NUMERIC yang didukung tidak cukup lebar. Pertimbangkan untuk menambahkan transmisi eksplisit ke jenis NUMERIC dalam kueri.

Ukuran maksimum baris yang diekspor tidak boleh melebihi 1 MiB.

Konfigurasi ekspor dengan opsi spanner_options

Anda dapat menggunakan opsi spanner_options untuk menentukan database dan tabel Spanner tujuan. Konfigurasi tersebut dinyatakan dalam bentuk string JSON, seperti yang ditampilkan dalam contoh berikut:

EXPORT DATA OPTIONS(
   uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID",
  format='CLOUD_SPANNER',
   spanner_options = """{
      "table": "TABLE_NAME",
      "priority": "PRIORITY",
      "tag": "TAG",
   }"""
)

Ganti kode berikut:

  • PROJECT_ID: nama project Google Cloud Anda.
  • INSTANCE_ID: nama instance database Anda.
  • DATABASE_ID: nama database Anda.
  • TABLE_NAME: nama tabel tujuan yang ada.
  • PRIORITY (opsional): prioritas permintaan tulis. Nilai yang diizinkan: LOW, MEDIUM, HIGH. Nilai default: MEDIUM.
  • TAG (opsional): meminta tag untuk membantu mengidentifikasi traffic pengekspor dalam pemantauan Spanner. Nilai default: bq_export.

Persyaratan kueri ekspor

Untuk mengekspor hasil kueri ke Spanner, hasilnya harus memenuhi persyaratan berikut:

  • Semua kolom dalam kumpulan hasil harus ada di tabel tujuan, dan jenisnya harus cocok.
  • Kumpulan hasil harus berisi semua kolom NOT NULL untuk tabel tujuan.
  • Nilai kolom tidak boleh melebihi batas ukuran data dalam tabel Spanner.
  • Setiap jenis kolom yang tidak didukung harus dikonversi ke salah satu jenis yang didukung sebelum diekspor ke Spanner.

Mengekspor data

Anda dapat menggunakan pernyataan EXPORT DATA untuk mengekspor data dari tabel BigQuery ke tabel Spanner.

Contoh berikut mengekspor kolom yang dipilih dari tabel bernama mydataset.table1:

EXPORT DATA OPTIONS (
  uri = 'https://spanner.googleapis.com/PROJECT_ID/project/INSTANCE_ID/instance/databases/DATABASE_ID',
  format='CLOUD_SPANNER',
  spanner_options="""{ "table": "TABLE_NAME" }"""
)
AS SELECT * FROM mydataset.table1;

Ganti kode berikut:

  • PROJECT_ID: nama project Google Cloud Anda
  • INSTANCE_ID: nama instance database Anda
  • DATABASE_ID: nama database Anda
  • TABLE_NAME: nama tabel tujuan yang ada

Ekspor pengoptimalan

Untuk mengoptimalkan ekspor data dari BigQuery ke Spanner, Anda dapat mencoba langkah berikut:

  • Meningkatkan jumlah node di instance tujuan Spanner. Pengekspor secara otomatis menskalakan jumlah slot BigQuery Export secara proporsional dengan jumlah node Spanner dan unit pemrosesan. Untuk mengetahui detail tambahan tentang memaksimalkan throughput operasi tulis, baca Ringkasan performa.

  • Hindari mengurutkan hasil kueri. Jika kumpulan hasil berisi semua kolom kunci utama, pengekspor akan otomatis mengurutkan kunci utama tabel tujuan untuk menyederhanakan penulisan dan meminimalkan pertentangan.

    Jika kunci utama tabel tujuan menyertakan kolom yang dihasilkan, Anda harus menambahkan ekspresi kolom yang dihasilkan ke kueri untuk memastikan bahwa data yang diekspor diurutkan dengan benar.

Harga

Untuk mengetahui informasi tentang harga ekspor data, lihat Harga BigQuery.

Setelah data diekspor, Anda akan dikenai biaya karena menyimpan data di Spanner. Untuk mengetahui informasi selengkapnya, lihat Harga Spanner.