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
STRINGdi BigQuery:TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- Jenis data berikut dipetakan sebagai
TIMESTAMPdi 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:
TIMESTAMP_TZ,TIMESTAMP_LTZ- Untuk mengetahui informasi selengkapnya, lihat Menilai data Snowflake.
Jenis data Parquet berikut tidak didukung, tetapi dapat dikonversi:
TIMESTAMP_NTZOBJECT,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
- Jenis data Parquet berikut tidak didukung:
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:
- Jalankan
dwh-migration-tooluntuk Snowflake. Untuk mengetahui informasi selengkapnya, lihat Membuat metadata untuk terjemahan dan penilaian. - Upload file
metadata.zipyang dihasilkan ke bucket Cloud Storage. Filemetadata.zipdigunakan sebagai input untuk mesin terjemahan. Jalankan layanan terjemahan batch, dengan menentukan kolom
target_typessebagaimetadata. 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.