Deteksi dan pemetaan skema untuk Snowflake

Panduan ini menunjukkan cara menentukan skema saat mentransfer data dari Snowflake ke BigQuery. Anda dapat menggunakan BigQuery Data Transfer Service untuk mendeteksi pemetaan jenis data dan skema secara otomatis, atau Anda dapat menggunakan mesin terjemahan untuk menentukan skema dan jenis data secara manual.

Deteksi Skema Default

Konektor Snowflake dapat mendeteksi skema tabel Snowflake Anda secara otomatis. Untuk menggunakan deteksi skema otomatis, Anda dapat mengosongkan kolom Jalur GCS output terjemahan saat menyiapkan transfer Snowflake.

Daftar berikut menunjukkan cara konektor Snowflake memetakan jenis data Snowflake Anda ke BigQuery:

  • Jenis data berikut dipetakan sebagai STRING di BigQuery:
    • TIMESTAMP_TZ
    • TIMESTAMP_LTZ
    • OBJECT
    • VARIANT
    • ARRAY
  • Jenis data berikut dipetakan sebagai TIMESTAMP di BigQuery:
    • TIMESTAMP_NTZ

Semua jenis data Snowflake lainnya dipetakan langsung ke jenis yang setara di BigQuery.

Menggunakan output mesin terjemahan untuk skema

Untuk menentukan skema secara manual (misalnya, untuk mengganti atribut skema tertentu), Anda dapat membuat metadata dan menjalankan mesin terjemahan dengan langkah-langkah berikut:

Batasan

  • Data diekstrak dari Snowflake dalam format data Parquet sebelum dimuat ke BigQuery:

    • Jenis data Parquet berikut tidak didukung:
    • Jenis data Parquet berikut tidak didukung, tetapi dapat dikonversi:

      • TIMESTAMP_NTZ
      • OBJECT, VARIANT, ARRAY

      Gunakan YAML konfigurasi konversi jenis global untuk mengganti perilaku default jenis data ini saat Anda menjalankan mesin terjemahan.

      YAML konfigurasi mungkin terlihat mirip dengan contoh berikut:

      type: experimental_object_rewriter
      global:
        typeConvert:
          datetime: TIMESTAMP
          json: VARCHAR
      

Konektor BigQuery Data Transfer Service untuk Snowflake menggunakan mesin terjemahan layanan migrasi BigQuery untuk pemetaan skema saat memigrasikan tabel Snowflake ke BigQuery. Untuk menyelesaikan transfer data Snowflake, Anda harus membuat metadata untuk terjemahan terlebih dahulu, lalu menjalankan mesin terjemahan:

  1. Jalankan dwh-migration-tool untuk Snowflake. Untuk mengetahui informasi selengkapnya, lihat Membuat metadata untuk terjemahan dan penilaian.
  2. Upload file metadata.zip yang dihasilkan ke bucket Cloud Storage. File metadata.zip digunakan sebagai input untuk mesin terjemahan.
  3. Jalankan layanan terjemahan batch, dengan menentukan kolom target_types sebagai metadata. Untuk mengetahui informasi selengkapnya, lihat Menerjemahkan kueri SQL dengan Translation API.

    • Berikut adalah contoh perintah untuk menjalankan terjemahan batch untuk Snowflake:
      curl -d "{
      \"name\": \"sf_2_bq_translation\",
      \"displayName\": \"Snowflake to BigQuery Translation\",
      \"tasks\": {
          string: {
            \"type\": \"Snowflake2BigQuery_Translation\",
            \"translation_details\": {
                \"target_base_uri\": \"gs://sf_test_translation/output\",
                \"source_target_mapping\": {
                  \"source_spec\": {
                      \"base_uri\": \"gs://sf_test_translation/input\"
                  }
                },
                \"target_types\": \"metadata\",
            }
          }
      },
      }" \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
    
    • Anda dapat memeriksa status perintah ini di halaman Terjemahan SQL di BigQuery. Output tugas terjemahan batch disimpan di gs://translation_target_base_uri/metadata/config/.

Izin akun layanan yang diperlukan

Dalam transfer Snowflake, akun layanan digunakan untuk membaca data dari output mesin terjemahan di jalur Cloud Storage yang ditentukan. Anda harus memberikan izin storage.objects.get dan storage.objects.list kepada akun layanan.

Sebaiknya akun layanan termasuk dalam Google Cloud project yang sama tempat konfigurasi transfer dan set data tujuan dibuat. Jika akun layanan berada di project Google Cloud yang berbeda dengan project yang membuat transfer data BigQuery, Anda harus mengaktifkan otorisasi akun layanan lintas project.

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