Migrasi Snowflake ke BigQuery

Dokumen ini memberikan latar belakang teknis tentang cara memigrasikan data dari Snowflake ke BigQuery. Artikel ini membahas perbedaan dasar antara Snowflake dan BigQuery. Panduan ini juga memberikan panduan agar migrasi berhasil, seperti berikut:

  • Perubahan skema yang diperlukan
  • Alat dan opsi migrasi yang tersedia
  • Cara memigrasikan data (menggunakan proses ekspor contoh)

Anda juga dapat menggunakan batch terjemahan SQL untuk memigrasikan skrip SQL secara massal, atau terjemahan SQL interaktif untuk menerjemahkan kueri ad hoc singkat ini. Snowflake SQL didukung oleh kedua alat di pratinjau.

Terminologi

Dokumen ini menggunakan terminologi Snowflake dan BigQuery untuk menjelaskan fungsi yang disediakan setiap produk. Tabel berikut memetakan istilah Snowflake ke istilah BigQuery yang setara:

Snowflake BigQuery
Database Set data
Skema Skema
Tabel sementara atau sementara khusus sesi Tabel anonim atau sementara
Lihat Lihat
Tampilan aman Tampilan yang diberi otorisasi
Warehouse virtual Reservasi
Tampilan terwujud Tampilan terwujud
Tidak ada padanan untuk partisi (karena partisi mikro digunakan) Membuat partisi
Pengelompokan Pengelompokan
Fungsi buatan pengguna yang ditingkatkan keamanan (UDF) UDF yang Diizinkan

Perbandingan arsitektur

Snowflake dan BigQuery adalah data warehouse analitik, tetapi keduanya memiliki beberapa perbedaan arsitektur utama.

arsitektur Snowflake adalah campuran dari arsitektur database disk bersama tradisional dan arsitektur database bersama tanpa tujuan sama sekali. Seperti arsitektur yang tidak digunakan bersama, data di Snowflake dikelola dalam layanan penyimpanan objek cloud yang terpisah. Seperti arsitektur disk bersama, kueri di Snowflake menggunakan cluster komputasi khusus. Di Snowflake, setiap cluster mengelola bagian yang disimpan dalam cache dari seluruh set data untuk mempercepat performa kueri. Untuk informasi selengkapnya, lihat arsitektur Snowflake.

arsitektur BigQuery sangat berbeda dengan solusi cloud data warehouse berbasis node tradisional atau sistem MPP. Platform ini memisahkan penyimpanan dan komputasi, sehingga mereka dapat melakukan penskalaan secara independen sesuai permintaan. Untuk mengetahui informasi selengkapnya, lihat Dasar-Dasar BigQuery.

Perbandingan antarmuka pengguna

Antarmuka web Snowflake mencerminkan antarmuka command line (CLI) Snowflake. Kedua antarmuka memungkinkan Anda melakukan hal berikut:

  • Mengelola database
  • Mengelola gudang
  • Mengelola kueri dan lembar kerja
  • Melihat kueri historis

Antarmuka web juga dapat digunakan untuk mengelola sandi dan preferensi pengguna Snowflake.

Klien Snowflake CLI menggunakan SnowSQL untuk terhubung ke Snowflake guna menjalankan kueri SQL dan operasi lainnya.

Antarmuka BigQuery dibangun ke dalam Google Cloud Console dan berisi daftar resource BigQuery yang dapat Anda lihat:

  • Bagian BigQuery Studio menampilkan set data, tabel, tampilan, dan resource BigQuery lainnya. Di sini Anda dapat membuat dan menjalankan kueri, bekerja dengan tabel dan tampilan, melihat histori tugas BigQuery, dan melakukan tugas BigQuery umum lainnya.
  • Bagian Transfer data membuka halaman BigQuery Data Transfer Service.
  • Bagian Kueri terjadwal menampilkan kueri terjadwal Anda.
  • Bagian Pengelolaan kapasitas menampilkan komitmen slot, reservasi, dan penetapan reservasi.
  • Bagian BI Engine membuka halaman BigQuery BI Engine.

BigQuery juga memiliki alat command line berbasis Python. Untuk informasi selengkapnya, lihat menggunakan alat command line bq.

Keamanan

Saat bermigrasi dari Snowflake ke BigQuery, Anda harus mempertimbangkan cara Google Cloud secara umum, dan khususnya BigQuery, menangani keamanan secara berbeda dari Snowflake.

Snowflake memiliki berbagai fitur terkait keamanan seperti berikut:

  • Akses situs dan jaringan
  • Autentikasi akun dan pengguna
  • Keamanan objek
  • Keamanan data
  • Validasi keamanan

Keamanan di Snowflake didasarkan pada fitur penyedia cloud Anda. Layanan ini memberikan kontrol terperinci atas akses ke objek, operasi objek, dan siapa yang dapat membuat atau mengubah kebijakan kontrol akses.

BigQuery yang paralel dengan hak istimewa kontrol akses Snowflake adalah peran Identity and access Management (IaM) di Google Cloud. Hak istimewa ini menentukan operasi yang diizinkan pada resource. Hak istimewa diterapkan di tingkat Google Cloud.

Enkripsi

Di Snowflake, keamanan tingkat kolom didukung dalam edisi Enterprise, dan kunci enkripsi yang dikelola pelanggan didukung dalam edisi Business Critical. Edisi tersebut memiliki harga yang berbeda. Di BigQuery, semua fitur dan langkah keamanan yang ditingkatkan ditawarkan sebagai fitur standar tanpa biaya tambahan.

Snowflake menyediakan enkripsi menyeluruh yang memungkinkannya mengenkripsi semua data yang disimpan secara otomatis. Google Cloud menyediakan fitur yang sama dengan mengenkripsi semua data dalam penyimpanan dan transit secara default.

Mirip dengan edisi Snowflake Business Critical, BigQuery mendukung kunci enkripsi yang dikelola pelanggan untuk pengguna yang ingin mengontrol dan mengelola kunci enkripsi kunci di Cloud Key Management Service singkat ini. BigQuery juga memungkinkan enkripsi tingkat kolom. Untuk mengetahui informasi selengkapnya tentang enkripsi di Google Cloud, lihat Enkripsi dalam penyimpanan di Google Cloud dan Enkripsi saat transit di Google Cloud.

Peran

Peran adalah entity yang dapat memberikan dan mencabut hak istimewa pada objek yang dapat diamankan.

Snowflake mendukung dua jenis peran berikut:

  • Peran yang ditentukan sistem: Peran ini terdiri dari hak istimewa terkait sistem dan keamanan, serta dibuat dengan hak istimewa yang terkait dengan pengelolaan akun.
  • Peran khusus: Anda dapat membuat peran ini menggunakan peran SECURITYADMIN atau peran apa pun yang memiliki hak istimewa CREATE ROLE. Setiap peran khusus di Snowflake terdiri dari hak istimewa.

Di IaM, izin dikelompokkan ke dalam peran. IaM menyediakan tiga jenis peran:

  • Peran dasar: Peran ini mencakup peran Pemilik, Editor, dan Viewer. Anda dapat menerapkan peran ini pada tingkat resource layanan atau project menggunakan konsol Google Cloud, Identity and access Management aPI, atau gcloud CLI. Secara umum, untuk keamanan terkuat, sebaiknya Anda menggunakan peran khusus BigQuery untuk mengikuti prinsip hak istimewa terendah.
  • Peran yang telah ditetapkan . Peran ini memberikan akses yang lebih terperinci ke fitur dalam produk (seperti BigQuery) dan dimaksudkan untuk mendukung kasus penggunaan umum dan pola kontrol akses.
  • Peran khusus: Peran ini terdiri dari izin yang ditentukan pengguna.

Kontrol akses

Snowflake memungkinkan Anda memberikan peran ke peran lain sehingga membuat hierarki peran. IaM tidak mendukung hierarki peran, tetapi menerapkan hierarki resource. Hierarki IaM mencakup level organisasi, level folder, level project, dan level resource. Anda dapat menetapkan peran IAM di level hierarki mana pun, dan resource mewarisi semua kebijakan resource induknya.

Snowflake dan BigQuery mendukung kontrol akses level tabel. Izin tingkat tabel menentukan pengguna, grup, dan akun layanan yang dapat mengakses tabel atau tampilan. Anda dapat memberi pengguna akses ke tabel atau tampilan tertentu tanpa memberi pengguna akses ke set data lengkap.

Snowflake juga menggunakan keamanan level baris dan keamanan level kolom.

Di BigQuery, IAM menyediakan kontrol akses level tabel. Untuk akses yang lebih terperinci, Anda juga dapat menggunakan kontrol akses tingkat kolom atau keamanan tingkat baris. Jenis kontrol ini memberikan akses yang lebih terperinci ke kolom sensitif dengan menggunakan tag kebijakan atau klasifikasi data berbasis jenis.

Anda juga dapat membuat tampilan yang diizinkan guna membatasi akses data untuk kontrol akses yang lebih terperinci sehingga pengguna yang ditentukan dapat membuat kueri tampilan tanpa perlu memiliki akses baca ke tabel pokok.

Hal-hal yang perlu dipertimbangkan saat melakukan migrasi

Ada beberapa fitur Snowflake yang tidak dapat Anda transfer langsung ke BigQuery. Misalnya, BigQuery tidak menawarkan dukungan bawaan untuk skenario berikut. Dalam skenario ini, Anda mungkin perlu menggunakan layanan lain di Google Cloud.

  • Perjalanan waktu: Di BigQuery, Anda dapat menggunakan perjalanan waktu untuk mengakses data dari titik mana pun dalam tujuh hari terakhir. Jika Anda perlu mengakses data lebih dari tujuh hari, pertimbangkan untuk mengekspor snapshot yang dijadwalkan secara rutin. Snowflake memungkinkan Anda mengakses data historis (data yang telah diubah atau dihapus) kapan saja dalam periode yang ditentukan. Anda dapat menetapkan periode ini dengan nilai apa pun mulai dari 0 hingga 90 hari.

  • aliran: BigQuery mendukung pengambilan data perubahan (CDC) dengan Datastream. Anda juga dapat menggunakan software CDC, seperti Debezium, untuk menulis data ke BigQuery dengan Dataflow. Untuk informasi lebih lanjut tentang mendesain pipeline CDC secara manual dengan BigQuery, lihat Memigrasikan data warehouse ke BigQuery: Mengubah pengambilan data (CDC). Dalam Snowflake, objek aliran data merekam perubahan bahasa manipulasi data yang dilakukan pada tabel dan juga metadata tentang setiap perubahan sehingga Anda dapat mengambil tindakan dengan data yang diubah.

  • Tasks: BigQuery memungkinkan Anda menjadwalkan kueri dan aliran data atau integrasi streaming ke dalam kueri dengan Datastream. Snowflake dapat menggabungkan tugas dengan aliran tabel untuk alur kerja ekstrak, pemuatan, dan transfer berkelanjutan guna memproses baris tabel yang baru saja diubah.

  • Fungsi eksternal: BigQuery mendukung panggilan fungsi eksternal melalui Cloud Functions. Namun, Anda juga dapat menggunakan fungsi yang ditentukan pengguna (UDF) seperti UDF SQL, meskipun fungsi ini tidak dijalankan di luar BigQuery. Di Snowflake, fungsi eksternal memanggil kode yang berjalan di luar Snowflake. Misalnya, informasi yang dikirim ke layanan jarak jauh biasanya direlai melalui layanan proxy.

Memigrasikan data dari Snowflake ke BigQuery

Bagian ini menjelaskan cara mengonfigurasi dan memulai migrasi dari Snowflake ke BigQuery berdasarkan framework yang diuraikan dalam artikel Memigrasikan data warehouse ke BigQuery: apa dan cara melakukan migrasi.

Arsitektur

Untuk memulai migrasi, Anda harus menjalankan Snowflake dan BigQuery. Diagram berikut menunjukkan arsitektur yang berpengaruh minimal terhadap operasi yang ada. Dengan mentransfer data yang bersih dan terkontrol dalam kualitas, Anda dapat menggunakan kembali alat dan proses yang ada sekaligus memindahkan beban kerja ke BigQuery. Anda juga dapat memvalidasi laporan dan dasbor terhadap versi lama. Meskipun demikian, karena data OLaP dikelola di tempat yang redundan, operasi ini tidak hemat biaya. Hal ini juga memperpanjang waktu pemrosesan.

  • Titik 1 menunjukkan perpindahan data dari Snowflake ke Cloud Storage.
  • Poin 2 menunjukkan persistensi data ke BigQuery.
  • Poin 3 menunjukkan cara data dikirim ke pengguna akhir.

Anda dapat memvalidasi laporan dan dasbor terhadap iterasi lama. Untuk informasi lebih lanjut, lihat Memigrasikan data warehouse ke BigQuery: Memverifikasi dan memvalidasi.

Migrasi Snowflake ke BigQuery yang sedang berlangsung.

arsitektur final untuk migrasi data warehouse Anda memiliki semua data dari sistem sumber yang disimpan secara langsung di Google Cloud. Bergantung pada jumlah dan kompleksitas sistem sumber, pengiriman arsitektur ini dapat dilakukan lebih lanjut dengan menangani sistem sumber satu per satu menurut prioritas, interdependensi, risiko integrasi, atau faktor bisnis lainnya.

Diagram berikut mengasumsikan migrasi pipeline dan penyerapan data ke Google Cloud.

  • Titik 1 menunjukkan titik integrasi sinkron dan asinkron. Integrasi sinkron, misalnya, antara sumber data dan app Engine saat menangani kasus penggunaan yang memerlukan tindakan pengguna yang eksplisit sebagai bagian dari alur.
  • Poin 2 menunjukkan penggunaan Pub/Sub untuk data peristiwa serentak dalam jumlah besar.
  • Poin 3 menunjukkan persistensi data yang menggunakan satu atau beberapa produk Google Cloud, bergantung pada sifat data.
  • Titik 4 menunjukkan proses ekstrak, transformasi, dan pemuatan (ETL) ke BigQuery.

Snowflake ke BigQuery setelah migrasi.

Menyiapkan lingkungan Cloud Storage

Google Cloud menawarkan beberapa cara untuk mentransfer data ke BigQuery menggunakan alat ETL lainnya. Polanya adalah sebagai berikut:

  1. 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.

  2. 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 memastikan lokasi set data BigQuery dan sumber data eksternal Anda, atau bucket Cloud Storage, berada di region yang sama. Untuk mengetahui informasi selengkapnya tentang pertimbangan lokasi geografis untuk memuat data dari Cloud Storage, lihat Pemuatan batch data.

  3. Memuat data dari bucket Cloud Storage ke BigQuery: Data Anda sekarang berada di bucket Cloud Storage, lebih dekat ke tujuannya. 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 ETL.

    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.

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 bagian Jenis data dalam Referensi terjemahan SQL Snowflake. Anda juga dapat menggunakan penerjemah SQL batch untuk menerjemahkan. Untuk mengetahui informasi lebih lanjut tentang jenis data yang didukung BigQuery, lihat Jenis data GoogleSQL.

Snowflake dapat mengekspor data dalam format file berikut. Anda dapat langsung memuat format ke BigQuery:

Perubahan skema

Jika Anda merencanakan perubahan skema dalam migrasi ke BigQuery, sebaiknya migrasikan skema terlebih dahulu apa adanya. BigQuery mendukung berbagai pola desain model data, seperti skema bintang atau skema Snowflake. Dengan dukungan ini, Anda tidak perlu memperbarui pipeline data upstream untuk skema baru, dan Anda dapat menggunakan alat migrasi otomatis untuk mentransfer data dan skema.

Memperbarui skema

Setelah data berada di BigQuery, Anda selalu dapat melakukan pembaruan pada skema, seperti menambahkan kolom ke definisi skema atau melonggarkan mode kolom dari REQUIRED menjadi NULLABLE.

Perlu diingat bahwa BigQuery menggunakan konvensi penamaan yang peka huruf besar/kecil untuk nama tabel, sedangkan Snowflake menggunakan pola penamaan yang tidak peka huruf besar/kecil. Konvensi ini berarti Anda mungkin perlu meninjau kembali inkonsistensi apa pun dalam konvensi penamaan tabel yang mungkin ada di Snowflake, dan memperbaiki inkonsistensi yang muncul selama perpindahan ke BigQuery. Untuk mengetahui informasi selengkapnya tentang perubahan skema, lihat Mengubah skema tabel.

Beberapa perubahan skema tidak didukung secara langsung di BigQuery dan memerlukan solusi manual, termasuk berikut ini:

  • Mengubah nama kolom.
  • Mengubah jenis data kolom.
  • Mengubah mode kolom (kecuali untuk melonggarkan kolom REQUIRED menjadi NULLABLE).

Untuk mengetahui petunjuk khusus cara menerapkan perubahan skema ini secara manual, lihat Mengubah skema tabel secara manual.

optimization/

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. Partisi dalam BigQuery mengacu pada tabel khusus yang dibagi menjadi beberapa segmen yang disebut partisi. Partisi berbeda dengan partisi mikro Snowflake, yang terjadi secara otomatis saat data dimuat. Dengan partisi BigQuery, 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 yang dipartisi.

Tabel yang dikelompokkan

Tabel yang dikelompokkan adalah pengoptimalan skema lainnya. Dengan BigQuery, seperti Snowflake, Anda dapat mengelompokkan tabel. Dengan begitu, Anda dapat mengatur data tabel secara otomatis berdasarkan konten satu atau beberapa kolom dalam skema tabel. BigQuery menggunakan kolom yang Anda tentukan untuk menempatkan data terkait di satu tempat. Pengelompokan dapat meningkatkan performa jenis kueri tertentu, seperti kueri yang menggunakan klausa filter atau kueri yang menggabungkan data. Untuk informasi lebih lanjut tentang cara kerja tabel yang dikelompokkan di BigQuery, lihat Pengantar tabel yang dikelompokkan.

Solusi Migrasi

Daftar berikut menjelaskan alat yang dapat Anda gunakan untuk memigrasikan data dari Snowflake ke BigQuery. alat ini digabungkan dalam bagian Contoh migrasi menggunakan pipeline untuk menyusun pipeline migrasi menyeluruh.

  • Perintah COPY INTO <location>: Gunakan perintah ini di Snowflake untuk menghapus muatan 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 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:

  • BigQuery Data Transfer Service: Lakukan transfer batch otomatis untuk data Cloud Storage ke BigQuery dengan layanan terkelola sepenuhnya ini. alat ini mengharuskan Anda mengekspor data Snowflake ke Cloud Storage terlebih dahulu.
  • gsutil: 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 migrasi menggunakan pipeline

Bagian berikut menunjukkan contoh cara memigrasikan data dari Snowflake ke BigQuery menggunakan tiga teknik berbeda: ekstraksi dan pemuatan, ETL, dan alat partner.

Mengekstrak dan memuat

Teknik ekstrak dan pemuatan menawarkan dua metode:

  • Menggunakan pipeline untuk menghapus muatan data dari Snowflake
  • Menggunakan pipeline dan driver JDBC untuk mengekspor data dari Snowflake

Menggunakan pipeline untuk menghapus muatan data dari Snowflake

Untuk menghapus muatan data dari Snowflake langsung ke Cloud Storage (direkomendasikan), atau untuk mendownload data dan menyalinnya ke Cloud Storage menggunakan gsutil atau library klien Cloud Storage, gunakan alat Snowflake2bq untuk memigrasikan data menggunakan perintah Snowflake COPY INTO <location>.

Selanjutnya, Anda memuat data Cloud Storage ke BigQuery dengan salah satu alat berikut:

  • BigQuery Data Transfer Service
  • bq fitur command-line
  • Library Klien BigQuery aPI

Menggunakan pipeline dan driver JDBC untuk mengekspor data dari Snowflake

Gunakan salah satu produk berikut untuk mengekspor data Snowflake dengan driver JDBC Snowflake:

Mengekstrak, mentransformasi, dan memuat

Jika ingin mengubah data sebelum memuatnya ke BigQuery, Anda dapat menambahkan langkah transformasi dalam pipeline yang dijelaskan di bagian Mengekstrak dan memuat sebelumnya.

Mentransformasi data Snowflake

Untuk mengubah data Anda sebelum memuatnya ke BigQuery, hapus muatan data langsung dari Snowflake ke Cloud Storage atau gunakangsutil untuk menyalin data, seperti yang dijelaskan dalamMengekstrak dan memuat bagian.

Memuat data Snowflake

Setelah mengubah data, muat data Anda ke BigQuery dengan salah satu metode berikut:

Gunakan pipeline dan driver JDBC untuk mengubah dan mengekspor data dari Snowflake

Tambahkan langkah transformasi dalam opsi pipeline berikut seperti yang dijelaskan di bagian Mengekstrak dan memuat sebelumnya.

Anda mungkin memiliki kasus penggunaan ekstrak, pemuatan, dan transformasi untuk memuat data dari Snowflake ke BigQuery, lalu mengubahnya. Untuk melakukan tugas ini, muat data Anda dari Snowflake ke tabel staging BigQuery menggunakan salah satu metode di bagian Ekstrak dan muat sebelumnya. Kemudian, jalankan kueri SQL pada tabel staging dan tulis output ke tabel produksi akhir di BigQuery.

alat partner untuk migrasi

ada beberapa vendor yang berspesialisasi dalam bidang migrasi EDW. Untuk mengetahui daftar partner utama dan solusi yang mereka berikan, lihat situs partner BigQuery Google Cloud.

Contoh proses ekspor

Bagian berikut menampilkan 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 Google Cloud Snowflake ke BigQuery.

Menyiapkan ekspor

Untuk penghapusan muatan, gunakan pernyataan SQL Snowflake untuk membuat spesifikasi format file bernama.

Tutorial ini menggunakan my_parquet_unload_format untuk format file, tetapi Anda dapat menggunakan nama yang berbeda.

   create or replace file format my_parquet_unload_format
     type = 'PARQUET'
     field_delimiter = '|'

Mengekspor data Snowflake

Setelah menyiapkan data, Anda perlu memindahkan data tersebut ke Google Cloud. Anda dapat melakukan langkah ini dengan salah satu dari dua cara berikut:

  1. Mengekspor data Anda langsung dari Snowflake ke Cloud Storage.
  2. Pengaturan data Snowflake secara bertahap di bucket amazon Simple Storage Service (amazon S3) atau azure Blob Storage.

Untuk menghindari hop data tambahan, langsung ekspor data Anda.

Mengekspor data Snowflake langsung ke Cloud Storage

Petunjuk berikut menunjukkan cara menggunakan perintah COPY Snowflake untuk menghapus muatan data dari Snowflake ke Cloud Storage:

  1. Di Snowflake, konfigurasi objek integrasi penyimpanan untuk mengizinkan Snowflake menulis ke bucket Cloud Storage yang direferensikan pada tahap Cloud Storage eksternal.

    Langkah ini melibatkan beberapa sublangkah.

    1. Buat integrasi dengan perintah CREATE STORAGE INTEGRATION:

      create storage integration gcs_int
        type = external_stage
        storage_provider = gcs
        enabled = true
        storage_allowed_locations = ('gcs://mybucket/unload/')
      
    2. ambil akun layanan Cloud Storage untuk Snowflake dengan perintah DESCRIBE INTEGRATION dan berikan izin akun layanan untuk mengakses Bucket Cloud Storage yang dipilih sebagai area staging:

      desc storage integration gcs_int;
      
      +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
      | 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@project1-123456.iam.gserviceaccount.com                  |                  |
      +-----------------------------+---------------+---------------------------------------------------------
      --------------------+------------------+
      
    3. Buat tahap Cloud Storage eksternal yang merujuk ke integrasi yang Anda buat dengan perintah CREATE STAGE:

      create or replace stage my_ext_unload_stage
        url='gcs://mybucket/unload'
        storage_integration = gcs_int
        file_format = my_parquet_unload_format;
      
  2. Gunakan perintah COPY INTO <location> untuk menyalin data dari tabel database Snowflake ke dalam bucket Cloud Storage dengan menentukan objek tahap eksternal yang Anda buat di langkah sebelumnya:

    copy into @my_ext_unload_stage/d1
    from mytable;
    

Ekspor data Snowflake ke Cloud Storage melalui Storage Transfer Service dari amazon S3

Contoh berikut menunjukkan cara menghapus muatan data dari tabel Snowflake ke bucket amazon S3 menggunakan perintah COPY:

  1. 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 aWS IaM, dan pembuatan integrasi penyimpanan di Snowflake dengan perintah CREATE STORAGE INTEGRATION:

    create storage integration s3_int
      type = external_stage
      storage_provider = s3
      enabled = true
      storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole'
      storage_allowed_locations = ('s3://unload/files/')
    
  2. ambil pengguna aWS IaM dengan perintah DESCRIBE INTEGRATION:

    desc integration s3_int;
    
    +---------------------------+---------------+================================================================================+------------------+
    | 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=                                                   |                  |
    +---------------------------+---------------+================================================================================+------------------+
    
  3. Beri pengguna aWS IaM izin untuk mengakses bucket amazon S3, dan buat tahap eksternal dengan perintah CREATE STAGE:

      create or replace stage my_ext_unload_stage url='s3://unload/files/'
        storage_integration = s3_int
        file_format = my_parquet_unload_format;
    
  4. Gunakan perintah COPY INTO <location> untuk menyalin data dari database Snowflake ke dalam bucket amazon S3 dengan menentukan objek tahap eksternal yang Anda buat sebelumnya:

      copy into @my_ext_unload_stage/d1 from mytable;
    
  5. Transfer file yang diekspor ke Cloud Storage menggunakan Storage Transfer Service.

Ekspor data Snowflake ke Cloud Storage melalui penyedia cloud lain:

azure Blob Storage Ikuti langkah-langkah yang dijelaskan dalam Menghapus muatan ke Microsoft azure. Kemudian, transfer file yang diekspor ke Cloud Storage menggunakan Storage Transfer Service.

Bucket amazon S3 Ikuti langkah-langkah yang dijelaskan dalam menghapus muatan ke amazon S3. Kemudian, transfer file yang diekspor ke Cloud Storage menggunakan Storage Transfer Service.

Langkah selanjutnya