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 inkremental

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.

Perilaku penyerapan data

Anda dapat menentukan cara data dimuat ke BigQuery dengan memilih preferensi tulis Penuh atau Inkremental dalam konfigurasi transfer saat menyiapkan transfer Snowflake. Transfer inkremental didukung dalam Pratinjau.

Anda dapat mengonfigurasi transfer data penuh untuk mentransfer semua data dari kumpulan data Snowflake Anda dengan setiap transfer data.

Atau, Anda dapat mengonfigurasi transfer data inkremental (Pratinjau) untuk hanya mentransfer data yang berubah sejak transfer data terakhir, bukan memuat seluruh set data dengan setiap transfer data. Jika memilih Bertahap untuk transfer data, Anda harus menentukan mode penulisan Tambahkan atau Gabungkan untuk menentukan cara data ditulis ke BigQuery selama transfer data bertahap. Bagian berikut menjelaskan mode penulisan yang tersedia.

Mode tulis tambahan

Mode penulisan penambahan hanya menyisipkan baris baru ke tabel tujuan Anda. Opsi ini menambahkan data yang ditransfer secara ketat tanpa memeriksa apakah ada data yang sudah ada, sehingga mode ini berpotensi menyebabkan duplikasi data dalam tabel tujuan.

Saat memilih mode penambahan, Anda harus memilih kolom watermark. Kolom tanda air diperlukan agar konektor Snowflake dapat melacak perubahan dalam tabel sumber.

Untuk transfer Snowflake, sebaiknya pilih kolom yang hanya diperbarui saat data dibuat, dan tidak akan berubah dengan pembaruan berikutnya. Misalnya, kolom CREATED_AT.

Mode penulisan upsert

Mode penulisan upsert memperbarui baris atau menyisipkan baris baru di tabel tujuan dengan memeriksa kunci utama. Anda dapat menentukan kunci utama agar konektor Snowflake dapat menentukan perubahan yang diperlukan untuk terus memperbarui tabel tujuan dengan tabel sumber. Jika kunci primer yang ditentukan ada di tabel BigQuery tujuan selama transfer data, konektor Snowflake akan memperbarui baris tersebut dengan data baru dari tabel sumber. Jika kunci utama tidak ada selama transfer data, konektor Snowflake akan menyisipkan baris baru.

Saat memilih mode upsert, Anda harus memilih kolom tanda air dan kunci utama:

  • Kolom tanda air diperlukan agar konektor Snowflake dapat melacak perubahan dalam tabel sumber.
    • Pilih kolom tanda air yang diperbarui setiap kali baris diubah. Sebaiknya gunakan kolom yang mirip dengan kolom UPDATED_AT atau LAST_MODIFIED.
  • Kunci utama dapat berupa satu atau beberapa kolom di tabel Anda yang diperlukan agar konektor Snowflake dapat menentukan apakah perlu menyisipkan atau memperbarui baris.

    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 Anda pilih, sebaiknya gunakan mode penulisan penambahan.

Untuk menggunakan mode penulisan upsert dengan transfer data inkremental, Anda harus menentukan kunci utama dalam file skema kustom.

Perilaku penyerapan inkremental

Saat Anda membuat perubahan pada skema tabel di sumber data, transfer data inkremental dari tabel tersebut akan tercermin di BigQuery dengan cara berikut:

Perubahan pada sumber data Perilaku penyerapan inkremental
Menambahkan kolom baru Kolom baru ditambahkan ke tabel BigQuery tujuan. Semua data sebelumnya untuk kolom ini akan memiliki nilai null.
Menghapus kolom Kolom yang dihapus tetap ada di tabel BigQuery tujuan. Entri baru ke kolom yang dihapus ini diisi dengan nilai null.
Mengubah jenis data dalam kolom Konektor hanya mendukung konversi jenis data yang didukung oleh pernyataan DDL ALTER COLUMN. Konversi jenis data lainnya akan menyebabkan transfer data gagal.

Jika Anda mengalami masalah, sebaiknya buat konfigurasi transfer baru.

Mengganti nama kolom Kolom asli tetap ada di tabel BigQuery tujuan seperti apa adanya, sementara kolom baru ditambahkan ke tabel tujuan dengan nama yang diperbarui.

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.