Migrasi Snowflake ke BigQuery - ringkasan
Dokumen ini menunjukkan cara memigrasikan data dari Snowflake ke BigQuery.
Untuk mengetahui framework umum dalam memigrasikan data warehouse lain ke BigQuery, lihat Ringkasan: Memigrasikan data warehouse ke BigQuery.
Ringkasan migrasi Snowflake ke BigQuery
Untuk migrasi Snowflake, sebaiknya siapkan arsitektur migrasi yang berpengaruh minimal terhadap operasi yang ada. Contoh berikut menunjukkan arsitektur tempat Anda dapat menggunakan kembali alat dan proses yang ada sekaligus memindahkan beban kerja lain ke BigQuery.
Anda juga dapat memvalidasi laporan dan dasbor terhadap versi sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Memigrasikan data warehouse ke BigQuery: Memverifikasi dan memvalidasi.
Memigrasikan workload individual
Saat Anda merencanakan migrasi Snowflake, sebaiknya migrasikan setiap workload berikut secara terpisah dalam urutan berikut:
Memigrasikan skema
Mulailah dengan mereplikasi skema yang diperlukan dari lingkungan Snowflake ke BigQuery. Sebaiknya gunakan BigQuery Migration Service untuk memigrasikan skema Anda. BigQuery Migration Service mendukung berbagai pola desain model data, seperti skema bintang atau skema snowflake, sehingga Anda tidak perlu memperbarui pipeline data upstream untuk skema baru. BigQuery Migration Service juga menawarkan migrasi skema otomatis, termasuk kemampuan ekstraksi dan terjemahan skema, untuk menyederhanakan proses migrasi Anda.
Memigrasikan kueri SQL
Untuk memigrasikan kueri SQL, BigQuery Migration Service menawarkan berbagai fitur terjemahan SQL untuk mengotomatiskan konversi kueri SQL Snowflake ke SQL GoogleSQL, seperti penerjemah SQL batch untuk menerjemahkan kueri secara massal, penerjemah SQL interaktif untuk menerjemahkan kueri satu per satu, dan SQL Translation API. Layanan terjemahan ini juga menyertakan fungsi yang ditingkatkan dengan Gemini untuk lebih menyederhanakan proses migrasi kueri SQL Anda.
Saat menerjemahkan kueri SQL, tinjau kueri yang diterjemahkan dengan cermat untuk memverifikasi bahwa jenis data dan struktur tabel ditangani dengan benar. Untuk melakukannya, sebaiknya buat berbagai kasus pengujian dengan berbagai skenario dan data. Kemudian, jalankan kasus pengujian ini di BigQuery untuk membandingkan hasilnya dengan hasil Snowflake asli. Jika ada perbedaan, analisis dan perbaiki kueri yang dikonversi.
Migrasikan data
Ada beberapa cara untuk menyiapkan pipeline migrasi data guna mentransfer data Anda ke BigQuery. Secara umum, pipeline ini mengikuti pola yang sama:
Ekstrak data dari sumber: Salin file yang diekstrak dari sumber ke penyimpanan staging di lingkungan lokal. Untuk informasi lebih lanjut, lihat Memigrasikan data warehouse ke BigQuery: Mengekstrak data sumber.
Mentransfer data ke bucket Cloud Storage staging: Setelah selesai mengekstrak data dari sumber, transfer data ke bucket sementara di Cloud Storage. Bergantung pada jumlah data yang ditransfer dan bandwidth jaringan yang tersedia, Anda memiliki beberapa opsi.
Penting untuk memverifikasi bahwa lokasi set data BigQuery dan sumber data eksternal Anda, atau bucket Cloud Storage, berada di region yang sama.
Memuat data dari bucket Cloud Storage ke BigQuery: Data Anda sekarang berada di bucket Cloud Storage. ada beberapa opsi untuk mengunggah data ke BigQuery. Opsi tersebut tergantung pada seberapa banyak data harus diubah. Atau, Anda dapat mengubah data Anda dalam BigQuery dengan mengikuti pendekatan ELT.
Saat Anda mengimpor data secara massal dari file JSON, file avro, atau file CSV, BigQuery akan mendeteksi skema secara otomatis, sehingga Anda tidak perlu menentukannya terlebih dahulu. Untuk mendapatkan ringkasan mendetail tentang proses migrasi skema untuk workload EDW, lihat Proses migrasi skema dan data.
Untuk mengetahui daftar alat yang mendukung migrasi data Snowflake, lihat Alat migrasi.
Untuk contoh menyeluruh tentang cara menyiapkan pipeline migrasi data Snowflake, lihat Contoh pipeline migrasi Snowflake.
Mengoptimalkan skema dan kueri
Setelah migrasi skema, Anda dapat menguji performa dan melakukan pengoptimalan berdasarkan hasilnya. Misalnya, Anda dapat memperkenalkan partisi untuk membuat data lebih efisien untuk dikelola dan dikueri. Dengan partisi tabel, Anda dapat meningkatkan performa kueri dan kontrol biaya dengan melakukan partisi berdasarkan waktu penyerapan, stempel waktu, atau rentang bilangan bulat. Untuk informasi selengkapnya, lihat Pengantar tabel berpartisi.
Tabel yang dikelompokkan adalah pengoptimalan skema lainnya. Anda dapat mengelompokkan tabel untuk mengatur data tabel berdasarkan konten dalam skema tabel, sehingga meningkatkan performa kueri yang menggunakan klausa filter atau kueri yang menggabungkan data. Untuk mengetahui informasi selengkapnya, lihat Pengantar tabel yang dikelompokkan.
Jenis data, properti, dan format file yang didukung
Snowflake dan BigQuery mendukung sebagian besar jenis data yang sama, meskipun terkadang menggunakan nama yang berbeda. Untuk mengetahui daftar lengkap jenis data yang didukung di Snowflake dan BigQuery, lihat Jenis data. Anda juga dapat menggunakan alat terjemahan SQL, seperti penerjemah SQL interaktif, SQL Translation API, atau penerjemah SQL batch, untuk menerjemahkan berbagai dialek SQL ke dalam GoogleSQL.
Untuk mengetahui informasi selengkapnya tentang jenis data yang didukung di BigQuery, lihat Jenis data GoogleSQL.
Snowflake dapat mengekspor data dalam format file berikut. Anda dapat langsung memuat format berikut ke BigQuery:
- Memuat data CSV dari Cloud Storage.
- Memuat data Parquet dari Cloud Storage.
- Memuat data JSON dari Cloud Storage.
- Buat kueri data dari Apache Iceberg.
Alat migrasi
Daftar berikut menjelaskan alat yang dapat Anda gunakan untuk memigrasikan data dari Snowflake ke BigQuery. Untuk contoh cara penggunaan alat ini bersama-sama dalam pipeline migrasi Snowflake, lihat Contoh pipeline migrasi Snowflake.
- Perintah
COPY INTO <location>
: Gunakan perintah ini di Snowflake untuk mengekstrak data dari tabel Snowflake langsung ke dalam bucket Cloud Storage yang ditentukan. Untuk contoh menyeluruh, lihat Snowflake ke BigQuery (snowflake2bq) di GitHub. - Apache Sqoop: Untuk mengekstrak data dari Snowflake ke HDFS atau Cloud Storage, kirimkan tugas Hadoop dengan driver JDBC dari Sqoop dan Snowflake. Sqoop berjalan di lingkungan Dataproc.
- Snowflake JDBC: Gunakan driver ini dengan sebagian besar aplikasi atau alat klien yang mendukung JDBC.
Anda dapat menggunakan alat generik berikut untuk memigrasikan data dari Snowflake ke BigQuery:
- Konektor BigQuery Data Transfer Service untuk Snowflake Pratinjau: Lakukan transfer batch otomatis untuk data Cloud Storage ke BigQuery.
- Google Cloud CLI: Salin file Snowflake yang didownload ke Cloud Storage dengan alat command line ini.
- Alat command line bq: Berinteraksi dengan BigQuery menggunakan alat command line ini. Kasus penggunaan umum mencakup membuat skema tabel BigQuery, memuat data Cloud Storage ke dalam tabel, dan menjalankan kueri.
- Library klien Cloud Storage: Menyalin file Snowflake yang didownload ke Cloud Storage dengan alat kustom yang menggunakan library klien Cloud Storage.
- Library klien BigQuery: Berinteraksi dengan BigQuery menggunakan alat kustom yang dibuat berdasarkan library klien BigQuery.
- Penjadwal kueri BigQuery: Jadwalkan kueri SQL berulang dengan fitur BigQuery bawaan ini.
- Cloud Composer: Gunakan lingkungan apache airflow yang terkelola sepenuhnya ini untuk mengorkestrasi tugas pemuatan dan transformasi BigQuery.
Untuk informasi lebih lanjut tentang memuat data ke BigQuery, lihat Memuat data ke BigQuery.
Contoh pipeline migrasi Snowflake
Bagian berikut menunjukkan contoh cara memigrasikan data dari Snowflake ke BigQuery menggunakan tiga proses berbeda: ELT, ETL, dan alat partner.
Ekstrak, muat, 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
LOAD
menggunakan 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_FORMAT
dengan 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_int
BUCKET_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_ACCOUNT
akses 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_int
BUCKET_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 STAGE
untuk skema, dan hak istimewaUSAGE
untuk 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_NAME
dengan 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 tahap, yang ditautkan ke bucket Cloud Storage atau Amazon S3. File ini menyertakan awalan d1
.
Metode ekspor lainnya
Untuk menggunakan Azure Blob Storage bagi ekspor data Anda, ikuti langkah-langkah yang dijelaskan dalam Menghapus muatan ke Microsoft Azure. Kemudian, transfer file yang diekspor ke Cloud Storage menggunakan Storage Transfer Service.
Harga
Saat merencanakan migrasi Snowflake, pertimbangkan biaya transfer data, penyimpanan data, dan penggunaan layanan di BigQuery. Untuk mengetahui informasi selengkapnya, lihat Harga.
Mungkin ada biaya keluar untuk memindahkan data dari Snowflake atau AWS. Mungkin juga ada biaya tambahan saat mentransfer data antar-region, atau mentransfer data antar-penyedia cloud yang berbeda.