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:

Alat lain untuk mengekstrak data dari Snowflake

Anda juga dapat menggunakan alat berikut untuk mengekstrak data dari Snowflake:

Alat lain untuk memuat data ke BigQuery

Anda juga dapat menggunakan alat berikut untuk memuat data ke BigQuery:

Mengekstrak, mentransformasi, dan memuat

Jika Anda ingin mengubah data sebelum memuatnya ke BigQuery, pertimbangkan alat berikut:

  • Dataflow
  • 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.

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

  2. 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/
  3. 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                 |                  |
    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
  4. 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 layanan service-account-id@ akses baca dan tulis ke bucket <var>UNLOAD_BUCKET</var>.

  5. 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:

  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 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/
  2. 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=                                                   |                  |
    +---------------------------+---------------+================================================================================+------------------+
  3. Buat peran yang memiliki hak istimewa CREATE STAGE untuk skema, dan hak istimewa USAGE 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.

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