Menyiapkan transfer inkremental untuk Snowflake

Panduan ini menunjukkan cara mengonfigurasi transfer data inkremental dari Snowflake ke BigQuery. Transfer inkremental memungkinkan Anda mentransfer hanya data yang telah berubah sejak proses transfer terakhir, yang dapat mengurangi waktu dan biaya transfer.

Batasan

Transfer Snowflake inkremental tunduk pada batasan berikut:

  • Anda harus memberikan kolom kunci utama untuk menggunakan mode penulisan upsert. Untuk mengetahui informasi selengkapnya, lihat Menentukan kunci utama untuk transfer inkremental.
  • Kunci utama harus unik dalam tabel sumber. Jika ada duplikat, hasil operasi penggabungan di BigQuery mungkin tidak konsisten dan tidak cocok dengan data sumber.
  • Penanganan otomatis perubahan skema dengan transfer inkremental tidak didukung. Jika skema tabel sumber berubah, Anda harus memperbarui skema tabel BigQuery secara manual.
  • Transfer inkremental berfungsi optimal jika perubahan pada data sumber Anda terkonsentrasi dalam sejumlah kecil partisi. Performa transfer inkremental dapat menurun secara signifikan jika update tersebar di seluruh tabel sumber, karena hal ini memerlukan pemindaian banyak partisi. Jika Anda memiliki banyak baris yang diubah di antara transfer data, sebaiknya gunakan transfer penuh.
  • Beberapa operasi di Snowflake, seperti CREATE OR REPLACE TABLE atau CLONE, dapat menggantikan objek tabel asli dan histori pelacakan perubahannya yang terkait. Hal ini membuat transfer data yang ada menjadi tidak valid dan memerlukan sinkronisasi penuh baru untuk melanjutkan transfer inkremental.
  • Transfer inkremental harus dijalankan cukup sering agar tetap berada dalam periode retensi data Snowflake untuk pelacakan perubahan. Jika transfer terakhir yang berhasil dijalankan di luar periode ini, transfer berikutnya akan menjadi transfer penuh.

Mengonfigurasi transfer inkremental

Anda dapat mengonfigurasi transfer inkremental dengan memilih preferensi tulis Inkremental di konfigurasi transfer saat menyiapkan transfer Snowflake.

Jika memilih Incremental untuk transfer data, Anda dapat mentransfer dengan mode penulisan Tambahkan atau Upsert yang menentukan cara data ditulis ke BigQuery selama transfer data inkremental. Untuk mengaktifkan mode penulisan Upsert, Anda harus menentukan kunci utama dalam file skema kustom. Jika tidak ada kunci utama yang ditentukan, transfer akan menggunakan mode penulisan Tambahkan secara default. Bagian berikut menjelaskan mode penulisan yang tersedia.

Mode tulis tambahan

Mode penulisan penambahan hanya menyisipkan baris baru ke tabel tujuan Anda. Opsi ini hanya membongkar baris baru yang dimasukkan dalam tabel sumber dan menambahkan data yang ditransfer tanpa memeriksa data yang ada, sehingga mode ini berpotensi menyebabkan duplikasi data dalam tabel tujuan.

Mode penulisan upsert

Mode penulisan upsert memungkinkan Anda memperbarui, menyisipkan, atau menghapus kumpulan data dalam tabel tujuan menggunakan kunci utama. Jika kunci utama yang ditentukan ada di tabel BigQuery tujuan, konektor Snowflake akan menyisipkan, memperbarui, atau menghapus kumpulan data dengan benar untuk mencerminkan perubahan. Jika kunci utama tidak ada di tabel tujuan, konektor akan menyisipkan kumpulan data baru untuk penyisipan atau pembaruan sumber, sementara penghapusan akan dilewati dalam kasus ini.

Untuk menggunakan mode penulisan upsert dengan transfer data inkremental, Anda harus menentukan kunci utama dalam file skema kustom. Perhatikan hal-hal berikut saat memilih kunci utama:

  • Kunci utama dapat berupa satu atau beberapa kolom pada tabel yang diperlukan agar konektor dapat mengidentifikasi data yang akan diperbarui.

  • Pilih kolom yang berisi nilai non-null yang unik di semua baris tabel. Sebaiknya gunakan kolom yang menyertakan ID yang dibuat sistem, kode referensi unik (misalnya, ID yang bertambah otomatis), atau ID urutan berbasis waktu yang tidak dapat diubah.

  • Untuk mencegah kemungkinan hilangnya data atau kerusakan data, kolom kunci utama yang Anda pilih harus memiliki nilai unik. Jika Anda meragukan keunikan kolom kunci utama yang dipilih, sebaiknya gunakan mode penulisan penambahan atau penyerapan penuh.

Perilaku perubahan skema

Transfer inkremental tidak mendukung evolusi skema. Setiap modifikasi pada skema tabel sumber, seperti menambahkan, menghapus, mengganti nama kolom, atau mengubah jenis data kolom akan menyebabkan kegagalan pada proses transfer inkremental berikutnya. Jika terjadi perubahan skema sumber, Anda harus menjalankan transfer data penuh untuk menyinkronkan ulang data.

File skema kustom untuk transfer inkremental

Anda dapat menggunakan file skema kustom untuk menentukan kunci utama transfer inkremental dan menyesuaikan pemetaan skema. File skema kustom adalah file JSON yang mendeskripsikan skema sumber dan target.

Untuk transfer inkremental dalam mode Upsert, Anda harus mengidentifikasi satu atau beberapa kolom sebagai kunci utama. Untuk melakukannya, anotasi kolom dengan jenis penggunaan PRIMARY_KEY dalam file skema kustom.

Contoh berikut menunjukkan file skema kustom yang menentukan O_ORDERKEY dan O_ORDERDATE sebagai kunci utama untuk tabel orders:


{
  "databases": [
    {
      "name": "my_db",
      "originalName": "my_db",
      "tables": [
        {
          "name": "orders",
          "originalName": "orders",
          "columns": [
            {
              "name": "O_ORDERKEY",
              "originalName": "O_ORDERKEY",
              "usageType": [
                "PRIMARY_KEY"
              ]
            },
            {
              "name": "O_ORDERDATE",
              "originalName": "O_ORDERDATE",
              "usageType": [
                "PRIMARY_KEY"
              ]
            }
          ]
        }
      ]
    }
  ]
}

Mengaktifkan pelacakan perubahan

Sebelum dapat menyiapkan transfer Snowflake inkremental, Anda harus mengaktifkan pelacakan perubahan pada setiap tabel sumber dengan perintah berikut:

ALTER TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME SET CHANGE_TRACKING = TRUE;

Jika pelacakan perubahan tidak diaktifkan untuk tabel, konektor Snowflake akan menggunakan transfer data penuh untuk tabel tersebut secara default.

Langkah berikutnya

Setelah mengonfigurasi semua langkah yang diperlukan untuk transfer Snowflake inkremental, Anda dapat mengaktifkan transfer inkremental untuk konfigurasi transfer Snowflake. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan transfer Snowflake.