Salin dan ubah data di Snowflake menggunakan Azure Data Factory atau Azure Synapse Analytics

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Artikel ini menguraikan cara menggunakan aktivitas Salin di Azure Data Factory dan Azure alur Synapse untuk menyalin data dari dan ke Snowflake, dan menggunakan Aliran Data untuk mengubah data di Snowflake. Untuk informasi selengkapnya, lihat artikel pengantar untuk Data Factory atau Azure Synapse Analytics.

Penting

Konektor Snowflake baru menyediakan dukungan Snowflake asli yang ditingkatkan. Jika Anda menggunakan konektor Snowflake warisan dalam solusi Anda, didukung apa adanya untuk kompatibilitas mundur saja, lihat artikel konektor Snowflake (warisan).

Kemampuan yang didukung

Konektor Snowflake ini didukung untuk kemampuan berikut ini:

Kemampuan yang didukung IR
Salin aktivitas (sumber/sink) (1) (2)
Memetakan aliran data (sumber/sink) (1)
Aktivitas pencarian (1) (2)
Aktivitas skrip (1) (2)

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

Untuk aktivitas Salin, konektor Snowflake ini mendukung fungsi berikut:

  • Salin data dari Snowflake yang menggunakan perintahSALINAN Snowflake ke [lokasi]untuk mendapatkan kinerja terbaik.
  • Salin data ke Snowflake yang memanfaatkan SALINAN Snowflakeke dalam perintah [tabel] untuk mendapatkan kinerja terbaik. Proses ini mendukung Snowflake di Azure.
  • Jika proksi diperlukan untuk terhubung ke Snowflake dari Integration Runtime yang dihosting sendiri, Anda harus mengonfigurasi variabel lingkungan untuk HTTP_PROXY dan HTTPS_PROXY pada host Integration Runtime.

Prasyarat

Jika penyimpanan data Anda terletak di dalam jaringan lokal, jaringan virtual Azure, atau Amazon Virtual Private Cloud, Anda harus mengonfigurasi runtime integrasi yang dihosting sendiri untuk menghubungkannya. Pastikan untuk menambahkan alamat IP, yang digunakan oleh runtime integrasi dan dihost sendiri ke daftar yang diizinkan.

Jika penyimpanan data Anda adalah layanan data cloud terkelola, Anda dapat menggunakan Azure Integration Runtime. Jika akses dibatasi untuk IP yang disetujui dalam aturan firewall, Anda bisa menambahkan IP Azure Integration Runtime ke daftar izinkan.

Akun Snowflake yang digunakan untuk Sumber atau Sink harus memiliki akses yang diperlukan USAGE pada database dan akses baca/tulis pada skema dan tabel/tampilan di bawahnya. Selain itu, juga harus memiliki CREATE STAGE pada skema untuk dapat membuat tahap Eksternal dengan SAS URI.

Nilai properti Akun berikut harus diatur:

Properti Deskripsi Wajib diisi Default
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION Menentukan apakah akan memerlukan objek integrasi penyimpanan sebagai kredensial cloud saat membuat tahapan eksternal bernama (menggunakan CREATE STAGE) untuk mengakses lokasi penyimpanan cloud pribadi. SALAH SALAH
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION Menentukan apakah perlu menggunakan tahap eksternal bernama yang mereferensikan objek integrasi penyimpanan sebagai kredensial cloud saat memuat data dari atau membongkar data ke lokasi penyimpanan cloud pribadi. SALAH SALAH

Untuk informasi selengkapnya tentang mekanisme dan opsi keamanan jaringan yang didukung oleh Data Factory, lihat Strategi akses data.

Memulai

Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Buat layanan tertaut ke Snowflake menggunakan antarmuka pengguna

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Snowflake di antarmuka pengguna portal Microsoft Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari Snowflake dan pilih konektor Snowflake.

    Cuplikan layar konektor Snowflake.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Cuplikan layar konfigurasi layanan tertaut untuk Snowflake.

Detail konfigurasi konektor

Bagian berikut memberikan detail tentang properti yang menentukan entitas khusus untuk konektor Snowflake.

Properti layanan tertaut

Properti generik ini didukung untuk layanan tertaut Snowflake:

Properti Deskripsi Wajib
jenis Properti jenis harus diatur ke SnowflakeV2. Ya
accountIdentifier Nama akun bersama dengan organisasinya. Misalnya, myorg-account123. Ya
database Database default yang digunakan untuk sesi setelah menyambungkan. Ya
gudang Gudang virtual default yang digunakan untuk sesi setelah menyambungkan. Ya
authenticationType Jenis autentikasi yang digunakan untuk menyambungkan ke layanan Snowflake. Nilai yang diizinkan adalah: Dasar (Default) dan KeyPair. Lihat bagian terkait di bawah ini tentang properti dan contoh masing-masing selengkapnya. No
role Peran keamanan default yang digunakan untuk sesi setelah menyambungkan. No
connectVia Runtime integrasiyang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan runtime integrasi Azure atau runtime integrasi yang dihost sendiri jika penyimpanan data Anda berada di jaringan pribadi. Jika tidak ditentukan, menggunakan default Azure Integration Runtime. No

Konektor Snowflake ini mendukung jenis autentikasi berikut. Lihat bagian terkait untuk detailnya.

Autentikasi dasar

Untuk menggunakan autentikasi Dasar , selain properti generik yang dijelaskan di bagian sebelumnya, tentukan properti berikut:

Properti Deskripsi Wajib diisi
pengguna Nama masuk untuk pengguna Snowflake. Ya
kata sandi Kata sandi untuk pengguna Snowflake. Tandai bidang ini sebagai jenis SecureString untuk menyimpannya dengan aman. Atau, Anda dapat mereferensikan rahasia yang disimpan di Azure Key Vault. Ya

Contoh:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "Basic",
            "user": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "role": "<role>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Kata sandi di Azure Key Vault:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "Basic",
            "user": "<username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                }, 
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Catatan

Pemetaan Aliran Data hanya mendukung autentikasi Dasar.

Autentikasi pasangan kunci

Untuk menggunakan autentikasi Pasangan kunci, Anda perlu mengonfigurasi dan membuat pengguna autentikasi pasangan kunci di Snowflake dengan merujuk ke Autentikasi Pasangan Kunci & Rotasi Pasangan Kunci. Setelah itu, catat kunci privat dan frase sandi (opsional), yang Anda gunakan untuk menentukan layanan tertaut.

Selain properti generik yang dijelaskan di bagian sebelumnya, atur properti berikut:

Properti Deskripsi Wajib diisi
pengguna Nama masuk untuk pengguna Snowflake. Ya
privateKey Kunci privat yang digunakan untuk autentikasi pasangan kunci.

Untuk memastikan kunci privat valid saat dikirim ke Azure Data Factory, dan mempertimbangkan bahwa file privateKey menyertakan karakter baris baru (\n), penting untuk memformat konten privateKey dengan benar dalam bentuk literal string-nya. Proses ini melibatkan penambahan \n secara eksplisit ke setiap baris baru.
Ya
privateKeyPassphrase Frase sandi yang digunakan untuk mendekripsi kunci privat, jika dienkripsi. No

Contoh:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "KeyPair",
            "user": "<username>",
            "privateKey": {
                "type": "SecureString",
                "value": "<privateKey>"
            },
            "privateKeyPassphrase": { 
                "type": "SecureString",
                "value": "<privateKeyPassphrase>"
            },
            "role": "<role>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel Himpunan Data.

Properti berikut didukung untuk himpunan data Snowflake.

Properti Deskripsi Wajib
jenis Properti jenis himpunan data harus diatur ke SnowflakeV2Table. Ya
skema Nama skema. Perhatikan bahwa nama skema peka huruf besar-kecil. Tidak untuk sumber, Ya untuk sink
tabel Nama tabel/tampilan. Perhatikan bahwa nama tabel peka huruf besar-kecil. Tidak untuk sumber, Ya untuk sink

Contoh:

{
    "name": "SnowflakeV2Dataset",
    "properties": {
        "type": "SnowflakeV2Table",
        "typeProperties": {
            "schema": "<Schema name for your Snowflake database>",
            "table": "<Table name for your Snowflake database>"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "linkedServiceName": {
            "referenceName": "<name of linked service>",
            "type": "LinkedServiceReference"
        }
    }
}

Properti aktivitas salin

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikel Alur. Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink dari Snowflake.

Snowflake sebagai sumbernya

Konektor Snowflake menggunakan perintah COPY snowflake ke [lokasi] untuk mencapai performa terbaik.

Jika penyimpanan dan format data sink secara asli didukung oleh perintah SALINAN Snowflake, Anda dapat menggunakan aktivitas salin untuk langsung menyalin dari Snowflake ke sink. Untuk detailnya, lihatSalinan langsung dari Snowflake. Jika tidak, gunakan Salinanbertahap bawaan dari Snowflake.

Untuk menyalin data dari Snowflake, properti berikut ini didukung di bagianSalin sumberaktivitas.

Properti Deskripsi Wajib
jenis Properti jenis sumber aktivitas Salin harus diatur ke SnowflakeV2Source. Ya
pertanyaan Menentukan kueri SQL untuk membaca data dari Snowflake. Jika nama skema, tabel, dan kolom berisi huruf kecil, kutip pengidentifikasi objek dalam kueri, misalnyaselect * from "schema"."myTable".
Menjalankan prosedur tersimpan tidak didukung.
No
exportSettings Pengaturan lanjutan digunakan untuk mengambil data dari Snowflake. Anda dapat mengonfigurasi yang didukung oleh COPY ke dalam perintah yang akan dilewati layanan saat Anda menjalankan pernyataan. Ya
Di bawah exportSettings:
jenis Jenis perintah ekspor, diatur keSnowflakeExportCopyCommand. Ya
additionalCopyOptions Opsi salin tambahan, disediakan sebagai kamus pasangan bernilai kunci. Contoh: MAX_FILE_SIZE, TIMPA. Selengkapnya, lihat Opsi Salinan Snowflake. No
additionalFormatOptions Opsi format file tambahan yang disediakan untuk SALIN perintah sebagai kamus pasangan nilai kunci. Contoh: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Selengkapnya, lihat Opsi Jenis Format Snowflake. No

Catatan

Pastikan Anda memiliki izin untuk menjalankan perintah berikut dan mengakses skemaINFORMATION_SCHEMA dan tabel COLUMNS.

  • COPY INTO <location>

Salinan langsung dari Snowflake

Jika penyimpanan data dan format sink Anda memenuhi kriteria yang dijelaskan di bagian ini, Anda dapat menggunakan aktivitas Salin untuk langsung menyalin dari Snowflake ke sink. Layanan memeriksa pengaturan dan gagal menjalankan aktivitas Salin jika kriteria berikut tidak terpenuhi:

  • Layananyang ditautkansink adalah penyimpanan Azure Blob denganautentikasi tanda tangan akses bersama. Jika ingin langsung menyalin data ke Azure Data Lake Storage Gen2 dalam format yang didukung berikut ini, Anda dapat membuat layanan tertaut Azure Blob dengan autentikasi SAS terhadap akun ADLS Gen2 Anda, untuk menghindari penggunaan salinan bertahap dari Snowflake.

  • Formatdata sinkyaituParquet,teks yangdibatasi,atauJSONdengan konfigurasi berikut:

    • Untuk formatParquet,kodek kompresi tidak ada,Snappy,atauLzo.
    • Untuk format teks yang dibatasi:
      • rowDelimiter adalah \r\n, atau karakter tunggal apa pun.
      • compressiontidakadakompresi,gzip, bzip2ataukempis.
      • encodingName dibiarkan sebagai default atau diatur ke utf-8.
      • quoteCharmerupakankutipan ganda,kutipan tunggal,atau untai kosong (tidak ada karakter kutipan).
    • Untuk formatJSON, salinan langsung hanya mendukung kasus yang sumber tabel Snowflake atau hasil kueri hanya memiliki kolom tunggal dan jenis data kolom ini adalah VARIAN,OBJEK,atauARRAY.
      • compressiontidakadakompresi,gzip, bzip2ataukempis.
      • encodingName dibiarkan sebagai default atau diatur ke utf-8.
      • filePatterndi sink aktivitas salin dibiarkan sebagai default atau diaturke setOfObjects.
  • Di sumber aktivitas salin, additionalColumns tidak ditentukan.

  • Pemetaan kolom tidak ditentukan.

Contoh:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",
                "sqlReaderQuery": "SELECT * FROM MYTABLE",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand",
                    "additionalCopyOptions": {
                        "MAX_FILE_SIZE": "64000000",
                        "OVERWRITE": true
                    },
                    "additionalFormatOptions": {
                        "DATE_FORMAT": "'MM/DD/YYYY'"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salinan bertahap dari Snowflake

Saat penyimpanan atau format data sink Anda tidak kompatibel secara asli dengan perintah Snowflake COPY, seperti yang disebutkan di bagian terakhir, aktifkan salinan bertahap bawaan menggunakan instans penyimpanan Azure Blob sementara. Fitur salinan bertahap juga memberi Anda throughput yang lebih baik. Layanan mengekspor data dari Snowflake ke penyimpanan staging, lalu menyalin data ke sink, dan akhirnya membersihkan data sementara Anda dari penyimpanan staging. LihatSalinan bertahapuntuk detail tentang menyalin data dengan menggunakan cara bertahap.

Untuk menggunakan fitur ini, buat layanan tertaut penyimpanan Azure Blobyang merujuk ke akun penyimpanan Azure sebagai cara bertahap sementara. Lalu tentukan propertienableStagingstagingSettingsdalam aktivitas Salin.

Catatan

Layanan penyimpanan Azure Blob yang ditautkan harus menggunakan autentikasi tanda tangan akses bersama, sebagaimana diwajibkan oleh perintah SALINAN Snowflake. Pastikan Anda telah memberikan izin akses yang tepat ke Snowflake di penyimpanan Azure Blob penahapan. Untuk mempelajari lebih lengkap mengenai hal ini, lihat artikel ini.

Contoh:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",               
                "sqlReaderQuery": "SELECT * FROM MyTable",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand"
                }
            },
            "sink": {
                "type": "<sink type>"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Snowflake sebagai sink

Konektor Snowflake yang menggunakan perintahSALINAN Snowflake ke [lokasi]untuk mendapatkan kinerja terbaik. Selain itu, mendukung penulisan data ke Snowflake di Azure.

Jika penyimpanan dan format data sink secara asli didukung oleh perintah SALINAN Snowflake, Anda dapat menggunakan aktivitas salin untuk langsung menyalin dari sumber ke Snowflake. Untuk detailnya, lihatSalinan langsung dari Snowflake. Jika tidak, gunakan salinanbertahap bawaan dari Snowflake.

Untuk menyalin data ke Snowflake, properti berikut ini didukung di bagian sinkaktivitas Salin.

Properti Deskripsi Wajib
jenis Properti jenis sink aktivitas Salin, diatur ke SnowflakeV2Sink. Ya
preCopyScript Tentukan kueri SQL untuk aktivitas Salin yang akan dijalankan sebelum menulis data ke dalam Snowflake di setiap proses. Gunakan properti ini untuk membersihkan data yang telah dimuat sebelumnya. No
importSettings Pengaturan lanjutan digunakan untuk menulis data ke Snowflake. Anda dapat mengonfigurasi yang didukung oleh COPY ke dalam perintah yang akan dilewati layanan saat Anda menjalankan pernyataan. Ya
Di bawah importSettings:
jenis Jenis perintah ekspor, diatur keSnowflakeExportCopyCommand. Ya
additionalCopyOptions Opsi salin tambahan, disediakan sebagai kamus pasangan bernilai kunci. Contoh: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Selengkapnya, lihat Opsi Salinan Snowflake. No
additionalFormatOptions Opsi format file tambahan yang disediakan untuk perintah SALIN sebagai kamus pasangan nilai kunci. Contoh: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Selengkapnya, lihat Opsi Jenis Format Snowflake. No

Catatan

Pastikan Anda memiliki izin untuk menjalankan perintah berikut dan mengakses skemaINFORMATION_SCHEMA dan tabel COLUMNS.

  • SELECT CURRENT_REGION()
  • COPY INTO <table>
  • SHOW REGIONS
  • CREATE OR REPLACE STAGE
  • DROP STAGE

Salin langsung ke Snowflake

Jika penyimpanan data dan format sink Anda memenuhi kriteria yang dijelaskan di bagian ini, Anda dapat menggunakan aktivitas Salin untuk langsung menyalin dari Snowflake. Layanan memeriksa pengaturan dan gagal menjalankan aktivitas Salin jika kriteria berikut tidak terpenuhi:

  • Layananyang ditautkansink adalah penyimpanan Azure Blob denganautentikasi tanda tangan aksesbersama. Jika Anda ingin langsung menyalin data dari Azure Data Lake Storage Gen2 dalam format yang didukung berikut, Anda dapat membuat layanan tertaut Azure Blob dengan autentikasi SAS terhadap akun ADLS Gen2 Anda, untuk menghindari penggunaan salinan bertahap ke Snowflake.

  • Formatsumber datayaituParquet,teks yangdibatasi,atauJSONdengan konfigurasi berikut:

    • Untuk formatParquet,kodek kompresi tidakada,Snappy.

    • Untuk format teks dibatasi:

      • rowDelimiter adalah \r\n, atau karakter tunggal apa pun. Jika pemisah baris bukan "\r\n", firstRowAsHeader perlu false, dan skipLineCount tidak ditentukan.
      • compressiontidakadakompresi,gzip, bzip2ataukempis.
      • encodingName dibiarkan sebagai default atau diatur ke "UTF-8", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "BIG5", "EUC-JP", "EUC-KR", "GB18030", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-2", "ISO-8859-2", "ISO-8859-2", "ISO-8859-2", "ISO-8859-2", "ISO-8859-2", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255".
      • quoteCharmerupakankutipan ganda,kutipan tunggal,atau untai kosong (tidak ada karakter kutipan).
    • Untuk formatJSON, salinan langsung hanya mendukung kasus yang sumber tabel sink Snowflake hanya memiliki kolom tunggal dan jenis data kolom ini adalah VARIAN,OBJEK,atauARRAY.

      • compressiontidakadakompresi,gzip, bzip2ataukempis.
      • encodingName dibiarkan sebagai default atau diatur ke utf-8.
      • Pemetaan kolom tidak ditentukan.
  • Di sumber aktivitas Salin:

    • additionalColumns tidak ditentukan.
    • Jika sumber Anda adalah folder, recursive diatur ke true.
    • prefix, , modifiedDateTimeStartmodifiedDateTimeEnd, dan enablePartitionDiscovery tidak ditentukan.

Contoh:

"activities":[
    {
        "name": "CopyToSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Snowflake output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SnowflakeV2Sink",
                "importSettings": {
                    "type": "SnowflakeImportCopyCommand",
                    "copyOptions": {
                        "FORCE": "TRUE",
                        "ON_ERROR": "SKIP_FILE"
                    },
                    "fileFormatOptions": {
                        "DATE_FORMAT": "YYYY-MM-DD"
                    }
                }
            }
        }
    }
]

Salin bertahap ke Snowflake

Saat penyimpanan atau format data sumber Anda tidak kompatibel secara asli dengan perintah Snowflake COPY, seperti yang disebutkan di bagian terakhir, aktifkan salinan bertahap bawaan menggunakan instans penyimpanan Azure Blob sementara. Fitur salinan bertahap juga memberi Anda throughput yang lebih baik. Layanan secara otomatis mengonversi data untuk memenuhi persyaratan format data Snowflake. Kemudian memanggil perintah SALIN untuk memuat data ke Snowflake. Akhirnya, membersihkan data sementara Anda dari penyimpanan blob. LihatSalinan bertahapuntuk detail tentang menyalin data dengan menggunakan cara bertahap.

Untuk menggunakan fitur ini, buat layanan tertaut penyimpanan Azure Blobyang merujuk ke akun penyimpanan Azure sebagai cara bertahap sementara. Lalu tentukan propertienableStagingstagingSettingsdalam aktivitas Salin.

Catatan

Penahapan layanan tertaut penyimpanan Azure Blob perlu menggunakan autentikasi tanda tangan akses bersama seperti yang diperlukan oleh perintah SALINAN Snowflake.

Contoh:

"activities":[
    {
        "name": "CopyToSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Snowflake output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SnowflakeV2Sink",
                "importSettings": {
                    "type": "SnowflakeImportCopyCommand"
                }
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Properti pemetaan aliran data

Saat mengubah data dalam pemetaan aliran data, Anda dapat membaca dari dan menulis ke tabel di Snowflake. Untuk informasi selengkapnya, lihat transformasi sumber dan transformasi sink dalam aliran data pemetaan. Anda dapat memilih untuk menggunakan himpunan data Snowflake atau himpunan data sebaris sebagai jenis sumber dan sink.

Transformasi sumber

Tabel di bawah ini mencantumkan properti yang didukung oleh sumber Snowflake. Anda bisa mengedit properti ini di tab opsi Sumber. Konektor menggunakan transfer data internalSnowflake.

Nama Deskripsi Wajib diisi Nilai yang diizinkan Properti skrip aliran data
Tabel Jika memilih Tabel sebagai input, aliran data akan mengambil semua data dari tabel yang ditentukan dalam himpunan data Snowflake atau di opsi sumber saat menggunakan himpunan data sebaris. No String (hanya untuk himpunan data sebaris)
tableName
schemaName
Kueri Jika memilih Kueri sebagai input, masukkan kueri untuk mengambil data dari Snowflake. Pengaturan ini menggantikan tabel apa pun yang telah Anda pilih dalam himpunan data.
Jika nama skema, tabel, dan kolom berisi huruf kecil, kutip pengidentifikasi objek dalam kueri, misalnyaselect * from "schema"."myTable".
No String pertanyaan
Aktifkan ekstrak inkremental (Pratinjau) Gunakan opsi ini untuk memberi tahu ADF untuk hanya memproses baris yang telah berubah sejak terakhir kali alur dijalankan. No Boolean enableCdc
Kolom Inkremental Saat menggunakan fitur ekstrak inkremental, Anda harus memilih kolom tanggal/waktu/numerik yang ingin Anda gunakan sebagai marka air di tabel sumber Anda. No String waterMarkColumn
Aktifkan Pelacakan Perubahan Snowflake (Pratinjau) Opsi ini memungkinkan ADF memanfaatkan teknologi tangkapan data perubahan Snowflake untuk memproses hanya data delta sejak eksekusi alur sebelumnya. Opsi ini secara otomatis memuat data delta dengan operasi penyisipan baris, pembaruan, dan penghapusan tanpa memerlukan kolom tambahan apa pun. No Boolean enableNativeCdc
Perubahan Bersih Saat menggunakan pelacakan perubahan snowflake, Anda dapat menggunakan opsi ini untuk mendapatkan baris yang diubah atau perubahan lengkap yang dikurangi. Baris yang dideduksi berubah hanya akan menampilkan versi terbaru baris yang telah berubah sejak titik waktu tertentu, sementara perubahan lengkap akan menunjukkan kepada Anda semua versi setiap baris yang telah berubah, termasuk yang dihapus atau diperbarui. Misalnya, jika Anda memperbarui baris, Anda akan melihat versi penghapusan dan versi sisipkan dalam perubahan lengkap, tetapi hanya versi sisipkan dalam baris yang diubah yang dideduksi. Tergantung pada kasus penggunaan Anda, Anda dapat memilih opsi yang sesuai dengan kebutuhan Anda. Opsi defaultnya adalah false, yang berarti perubahan lengkap. No Boolean netChanges
Sertakan Kolom sistem Saat menggunakan pelacakan perubahan snowflake, Anda dapat menggunakan opsi systemColumns untuk mengontrol apakah kolom aliran metadata yang disediakan oleh Snowflake disertakan atau dikecualikan dalam output pelacakan perubahan. Secara default, systemColumns diatur ke true, yang berarti kolom aliran metadata disertakan. Anda dapat mengatur systemColumns ke false jika Anda ingin mengecualikannya. No Boolean systemColumns
Mulai membaca dari awal Mengatur opsi ini dengan ekstrak inkremental dan pelacakan perubahan akan menginstruksikan ADF untuk membaca semua baris pada eksekusi pertama alur dengan ekstrak inkremental diaktifkan. No Boolean skipInitialLoad

Contoh skrip sumber Snowflake

Saat menggunakan himpunan data Snowflake sebagai jenis sumber, skrip aliran data terkait adalah:

source(allowSchemaDrift: true,
	validateSchema: false,
	query: 'select * from MYTABLE',
	format: 'query') ~> SnowflakeSource

Jika menggunakan himpunan data sebaris, skrip aliran data terkait adalah:

source(allowSchemaDrift: true,
	validateSchema: false,
	format: 'query',
	query: 'select * from MYTABLE',
	store: 'snowflake') ~> SnowflakeSource

Pelacakan Perubahan Asli

Azure Data Factory sekarang mendukung fitur asli di Snowflake yang dikenal sebagai pelacakan perubahan, yang melibatkan pelacakan perubahan dalam bentuk log. Fitur snowflake ini memungkinkan kami melacak perubahan data dari waktu ke waktu sehingga berguna untuk tujuan pemuatan dan audit data bertahap. Untuk menggunakan fitur ini, saat Anda mengaktifkan Ubah penangkapan data dan memilih Pelacakan Perubahan Snowflake, kami membuat objek Stream untuk tabel sumber yang memungkinkan pelacakan perubahan pada tabel snowflake sumber. Selanjutnya, kami menggunakan klausa CHANGES dalam kueri kami untuk mengambil hanya data baru atau yang diperbarui dari tabel sumber. Selain itu, disarankan untuk menjadwalkan alur sehingga perubahan dikonsumsi dalam interval waktu retensi data yang ditetapkan untuk tabel sumber snowflake, pengguna lain mungkin melihat perilaku yang tidak konsisten dalam perubahan yang diambil.

Transformasi sink

Tabel di bawah ini mencantumkan properti yang didukung oleh sink Snowflake. Anda dapat mengedit properti ini di tab Pengaturan. Saat menggunakan himpunan data sebaris, Anda akan melihat pengaturan tambahan, yang sama dengan properti yang dijelaskan di bagian properti himpunan data. Konektor menggunakan transfer data internalSnowflake.

Nama Deskripsi Wajib diisi Nilai yang diizinkan Properti skrip aliran data
Perbarui() metode Tentukan operasi apa yang diizinkan di tujuan Snowflake Anda.
Untuk memperbarui, meningkatkan, atau menghapus baris, transformasi baris Alterdiperlukan untuk menandai baris untuk tindakan tersebut.
Ya true atau false dapat dideletable
dapat disisipkan
dapat diperbarui
dapat dibuat upsert
Kolom kunci Untuk pembaruan, upsert dan hapus, kolom kunci atau kolom harus diatur untuk menentukan baris mana yang akan diubah. No Array kunci
Tindakan pada tabel Menentukan apakah akan membuat ulang atau menghapus semua baris dari tabel tujuan sebelum menulis.
- Tidak Ada: Tidak ada tindakan yang akan dilakukan pada tabel.
- Buat ulang: Tabel akan dihapus dan dibuat ulang. Diperlukan jika membuat tabel baru secara dinamis.
- Kosongkan: Semua baris dari tabel target akan dihapus.
No true atau false recreate
Memotong

Contoh skrip{i>

Saat menggunakan himpunan data Snowflake sebagai jenis sink, skrip aliran data terkait adalah:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	deletable:true,
	insertable:true,
	updateable:true,
	upsertable:false,
	keys:['movieId'],
	format: 'table',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SnowflakeSink

Jika menggunakan himpunan data sebaris, skrip aliran data terkait adalah:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	format: 'table',
	tableName: 'table',
	schemaName: 'schema',
	deletable: true,
	insertable: true,
	updateable: true,
	upsertable: false,
	store: 'snowflake',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SnowflakeSink

Pengoptimalan Pushdown Kueri

Dengan mengatur Tingkat Pengelogan alur ke Tidak Ada, kami mengecualikan transmisi metrik transformasi menengah, mencegah potensi penghambat ke pengoptimalan Spark dan memungkinkan pengoptimalan pushdown kueri yang disediakan oleh Snowflake. Pengoptimalan pushdown ini memungkinkan peningkatan performa yang substansial untuk tabel Snowflake besar dengan himpunan data yang luas.

Catatan

Kami tidak mendukung tabel sementara di Snowflake, karena mereka lokal untuk sesi atau pengguna yang membuatnya, membuatnya tidak dapat diakses oleh sesi lain dan rentan ditimpa sebagai tabel biasa oleh Snowflake. Meskipun Snowflake menawarkan tabel sementara sebagai alternatif, yang dapat diakses secara global, mereka memerlukan penghapusan manual, bertentangan dengan tujuan utama kami menggunakan tabel Temp yang untuk menghindari operasi penghapusan dalam skema sumber.

Properti aktivitas pencarian

Selengkapnya tentang properti, lihat Aktivitas pencarian.

Meningkatkan layanan tertaut Snowflake

Untuk meningkatkan layanan tertaut Snowflake, buat layanan tertaut Snowflake baru dan konfigurasikan dengan merujuk ke properti layanan Tertaut.

Perbedaan antara Snowflake dan Snowflake (warisan)

Konektor Snowflake menawarkan fungsionalitas baru dan kompatibel dengan sebagian besar fitur konektor Snowflake (warisan). Tabel di bawah ini menunjukkan perbedaan fitur antara Snowflake dan Snowflake (warisan).

Snowflake Snowflake (warisan)
Mendukung autentikasi pasangan Dasar dan Kunci. Mendukung autentikasi Dasar.
Parameter skrip saat ini tidak didukung dalam aktivitas Skrip. Sebagai alternatif, gunakan ekspresi dinamis untuk parameter skrip. Untuk informasi selengkapnya, lihat Ekspresi dan fungsi di Azure Data Factory dan Azure Synapse Analytics. Mendukung parameter skrip dalam aktivitas Skrip.
Beberapa eksekusi pernyataan SQL dalam aktivitas Skrip saat ini tidak didukung. Untuk menjalankan beberapa pernyataan SQL, bagi kueri menjadi beberapa blok skrip. Mendukung beberapa eksekusi pernyataan SQL dalam aktivitas Skrip.
Mendukung BigDecimal dalam aktivitas Pencarian. Jenis NUMBER, seperti yang didefinisikan dalam Snowflake, akan ditampilkan sebagai string dalam aktivitas Pencarian. BigDecimal tidak didukung dalam aktivitas Pencarian.

Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas Salin, lihat format dan penyimpanan data yang didukung.