Tutorial migrasi Snowflake ke BigQuery
Dokumen ini memberikan contoh dan tutorial menyeluruh untuk berbagai cara Anda dapat menyiapkan pipeline migrasi Snowflake ke BigQuery.
Contoh pipeline migrasi Snowflake
Anda dapat memigrasikan data dari Snowflake ke BigQuery menggunakan tiga proses berbeda: ELT, ETL, atau menggunakan alat partner.
Ekstraksi, pemuatan, dan transformasi
Anda dapat menyiapkan proses ekstrak, pemuatan, dan transformasi (ELT) dengan dua metode:
- Menggunakan pipeline untuk mengekstrak data dari Snowflake dan memuat data ke BigQuery
- Ekstrak data dari Snowflake menggunakan produk Google Cloud lain.
Menggunakan pipeline untuk mengekstrak data dari Snowflake
Untuk mengekstraksi data dari Snowflake dan memuatnya langsung ke Cloud Storage, gunakan alat snowflake2bq.
Kemudian, Anda dapat memuat data dari Cloud Storage ke BigQuery menggunakan salah satu alat berikut:
- Konektor BigQuery Data Transfer Service untuk Cloud Storage
- Perintah
LOADmenggunakan alat command line bq - Library klien BigQuery API
Alat lain untuk mengekstrak data dari Snowflake
Anda juga dapat menggunakan alat berikut untuk mengekstrak data dari Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Konektor BigQuery Apache Spark
- Konektor Snowflake untuk Apache Spark
- Konektor BigQuery Hadoop
- Driver JDBC dari Snowflake dan Sqoop untuk mengekstrak data dari Snowflake ke Cloud Storage:
Alat lain untuk memuat data ke BigQuery
Anda juga dapat menggunakan alat berikut untuk memuat data ke BigQuery:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep oleh Trifacta
Mengekstrak, mentransformasi, dan memuat
Jika Anda ingin mengubah data sebelum memuatnya ke BigQuery, pertimbangkan alat berikut:
- Dataflow
- Clone kode template JDBC ke BigQuery, lalu ubah template untuk menambahkan transformasi Apache Beam.
- Cloud Data Fusion
- Buat pipeline yang dapat digunakan kembali dan transformasikan data Anda menggunakan plugin CDAP.
- Dataproc
- Transformasi data Anda menggunakan Spark SQL atau kode kustom dalam bahasa Spark yang didukung, seperti Scala, Java, Python, atau R.
alat partner untuk migrasi
ada beberapa vendor yang berspesialisasi dalam bidang migrasi EDW. Untuk mengetahui daftar partner utama dan solusi yang mereka berikan, lihat Partner BigQuery.
Tutorial ekspor Snowflake
Tutorial berikut menunjukkan contoh ekspor data dari Snowflake ke BigQuery yang menggunakan perintah COPY INTO <location> Snowflake.
Untuk mengetahui proses langkah demi langkah mendetail yang menyertakan contoh kode, lihat alat layanan profesional Snowflake ke BigQuery.Google Cloud
Menyiapkan ekspor
Anda dapat menyiapkan data Snowflake untuk diekspor dengan mengekstrak data Snowflake ke bucket Cloud Storage atau Amazon Simple Storage Service (Amazon S3) dengan langkah-langkah berikut:
Cloud Storage
Tutorial ini menyiapkan file dalam format PARQUET.
Gunakan pernyataan SQL Snowflake untuk membuat spesifikasi format file bernama.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Ganti
NAMED_FILE_FORMATdengan nama untuk format file. Contoh,my_parquet_unload_format.Buat integrasi dengan perintah
CREATE STORAGE INTEGRATION.create storage integration INTEGRATION_NAME type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('BUCKET_NAME')
Ganti kode berikut:
INTEGRATION_NAME: nama untuk integrasi penyimpanan. Misalnya,gcs_intBUCKET_NAME: jalur ke bucket Cloud Storage. Misalnya,gcs://mybucket/extract/
Ambil akun layanan Cloud Storage untuk Snowflake dengan perintah
DESCRIBE INTEGRATION.desc storage integration INTEGRATION_NAME;
Outputnya mirip dengan hal berikut ini:
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | gcs://mybucket1/path1/,gcs://mybucket2/path2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/ | [] | | STORAGE_GCP_SERVICE_ACCOUNT | String | service-account-id@iam.gserviceaccount.com | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Beri akun layanan yang tercantum sebagai
STORAGE_GCP_SERVICE_ACCOUNTakses baca dan tulis ke bucket yang ditentukan dalam perintah integrasi penyimpanan. Dalam contoh ini, beri akun layananservice-account-id@akses baca dan tulis ke bucket<var>UNLOAD_BUCKET</var>.Buat tahap Cloud Storage eksternal yang merujuk ke integrasi yang Anda buat sebelumnya.
create or replace stage STAGE_NAME url='UNLOAD_BUCKET' storage_integration = INTEGRATION_NAME file_format = NAMED_FILE_FORMAT;
Ganti kode berikut:
STAGE_NAME: nama untuk objek tahap Cloud Storage. Misalnya,my_ext_unload_stage
Amazon S3
Contoh berikut menunjukkan cara memindahkan data dari tabel Snowflake ke bucket Amazon S3:
Di Snowflake, konfigurasi objek integrasi penyimpanan untuk mengizinkan Snowflake menulis ke bucket amazon S3 yang direferensikan dalam tahap Cloud Storage eksternal.
Langkah ini melibatkan konfigurasi izin akses ke bucket Amazon S3, pembuatan peran IAM Amazon Web Services (AWS), dan pembuatan integrasi penyimpanan di Snowflake dengan perintah
CREATE STORAGE INTEGRATION:create storage integration INTEGRATION_NAME type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('BUCKET_NAME')
Ganti kode berikut:
INTEGRATION_NAME: nama untuk integrasi penyimpanan. Misalnya,s3_intBUCKET_NAME: jalur ke bucket Amazon S3 untuk memuat file. Misalnya,s3://unload/files/
Ambil pengguna AWS IAM dengan perintah
DESCRIBE INTEGRATION.desc integration INTEGRATION_NAME;
Outputnya mirip dengan hal berikut ini:
+---------------------------+---------------+================================================================================+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+================================================================================+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=
| | +---------------------------+---------------+================================================================================+------------------+ Buat peran yang memiliki hak istimewa
CREATE STAGEuntuk skema, dan hak istimewaUSAGEuntuk integrasi penyimpanan:CREATE role ROLE_NAME; GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME; GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;
Ganti
ROLE_NAMEdengan nama untuk peran. Contoh,myrole.Beri pengguna AWS IAM izin untuk mengakses bucket Amazon S3, dan buat tahap eksternal dengan perintah
CREATE STAGE:USE SCHEMA mydb.public; create or replace stage STAGE_NAME url='BUCKET_NAME' storage_integration = INTEGRATION_NAMEt file_format = NAMED_FILE_FORMAT;
Ganti kode berikut:
STAGE_NAME: nama untuk objek tahap Cloud Storage. Misalnya,my_ext_unload_stage
Mengekspor data Snowflake
Setelah menyiapkan data, Anda dapat memindahkan data ke Google Cloud.
Gunakan perintah COPY INTO untuk menyalin data dari tabel database Snowflake ke dalam bucket Cloud Storage atau Amazon S3 dengan menentukan objek tahap eksternal, STAGE_NAME.
copy into @STAGE_NAME/d1 from TABLE_NAME;
Ganti TABLE_NAME dengan nama tabel database Snowflake Anda.
Sebagai hasil dari perintah ini, data tabel disalin ke objek stage, yang ditautkan ke bucket Cloud Storage atau Amazon S3. File ini menyertakan awalan d1.
Metode ekspor lainnya
Untuk menggunakan Azure Blob Storage untuk ekspor data, ikuti langkah-langkah yang dijelaskan dalam Menghapus muatan ke Microsoft Azure. Kemudian, transfer file yang diekspor ke Cloud Storage menggunakan Storage Transfer Service.