Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Azure Data Factory
Azure Synapse Analytics
Tips
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 menjelaskan cara menggunakan fungsi Salin pada Azure Data Factory maupun alur Azure Synapse untuk menyalin data dari dan ke Snowflake, serta menggunakan Aliran Data untuk memungkinkan pengubahan data di Snowflake. Untuk informasi selengkapnya, lihat artikel pengantar untuk Data Factory atau Azure Synapse Analytics.
Penting
Konektor Snowflake V2 menyediakan dukungan Snowflake asli yang ditingkatkan. Jika Anda menggunakan konektor Snowflake V1 dalam solusi Anda, Anda disarankan untuk meningkatkan konektor Snowflake Anda sebelum 30 Juni 2025. Lihat bagian ini untuk detail tentang perbedaan antara V2 dan V1.
Kemampuan yang didukung
Konektor Snowflake ini didukung untuk kemampuan berikut ini:
Kemampuan yang didukung | IR |
---|---|
Aktivitas salin (sumber/tujuan) | (1) (2) |
Pemetaan aliran data (sumber/sink) | (1) |
Aktivitas pencarian | (1) (2) |
Aktivitas skrip (Terapkan versi 1.1 (Pratinjau) saat Anda menggunakan parameter skrip) | (1) (2) |
(1) Runtime integrasi Azure (2) Runtime integrasi yang dihost sendiri
Untuk aktivitas Salin, konektor Snowflake ini mendukung fungsi berikut:
- Salin data dari Snowflake yang menggunakan perintah COPY into [lokasi] dari Snowflake untuk mendapatkan performa terbaik.
- Salin data ke Snowflake yang memanfaatkan perintah COPY ke dalam [tabel] Snowflake untuk mencapai performa 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 perlu mengonfigurasi runtime integrasi yang dihost sendiri untuk menyambungkannya. Pastikan untuk menambahkan alamat IP yang digunakan oleh runtime integrasi yang dihost sendiri ke dalam 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 dapat menambahkan IP Azure Integration Runtime ke daftar yang diizinkan.
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 | Bawaan |
---|---|---|---|
MEMBUTUHKAN_INTEGRASI_PENYIMPANAN_UNTUK_PENCIPTAAN_TAHAPAN | 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 |
MEMBUTUHKAN INTEGRASI PENYIMPANAN UNTUK OPERASI TAHAPAN | 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.
Mulai
Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:
- Alat Salin Data
- Portal Microsoft Azure
- The .NET SDK
- The Python SDK
- Azure PowerShell
- The REST API
- Templat Azure Resource Manager
Buat layanan tertaut ke Snowflake menggunakan antarmuka pengguna
Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Snowflake di antarmuka pengguna portal Microsoft Azure.
Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:
Cari Snowflake dan pilih konektor Snowflake.
Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.
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 diisi |
---|---|---|
jenis | Properti jenis harus diatur ke SnowflakeV2. | Ya |
versi | Versi yang Anda tentukan. Merekomendasikan peningkatan ke versi terbaru untuk memanfaatkan penyempurnaan terbaru. | Ya untuk versi 1.1 (Pratinjau) |
pengidentifikasi akun | Nama akun bersama dengan organisasinya. Misalnya, myorg-account123. | Ya |
basis data | Database default yang digunakan untuk sesi setelah menyambungkan. | Ya |
gudang | Gudang virtual bawaan yang digunakan untuk sesi setelah menghubungkan. | Ya |
jenis autentikasi | Jenis autentikasi yang digunakan untuk menyambungkan ke layanan Snowflake. Nilai yang diizinkan adalah: Dasar (Default) dan KeyPair. Lihat bagian terkait di bawah tentang lebih banyak properti dan contoh masing-masing. | Tidak |
peranan | Peran keamanan default yang digunakan untuk sesi setelah terhubung. | Tidak |
tuan rumah | Nama host akun Snowflake. Misalnya: contoso.snowflakecomputing.com .
.cn juga didukung. |
Tidak |
hubungkan melalui | Runtime integrasi yang 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. | Tidak |
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. Anda juga 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"
}
}
}
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 |
Kunci pribadi | 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 |
KataSandiKunciPribadi | Frase sandi yang digunakan untuk mendekripsi kunci privat, jika dienkripsi. | Tidak |
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"
}
}
}
Catatan
Untuk pemetaan aliran data, sebaiknya buat kunci privat RSA baru menggunakan standar PKCS#8 dalam format PEM (file.p8).
Karakteristik 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 diisi |
---|---|---|
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 penampung |
tabel | Nama tabel/tampilan. Perhatikan bahwa nama tabel peka huruf besar-kecil. | Tidak untuk sumber, ya untuk penampung |
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 Pipeline. Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink dari Snowflake.
Snowflake sebagai sumbernya
Konektor Snowflake menggunakan perintah Snowflake "COPY into [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, lihat Salinan langsung dari Snowflake. Jika tidak, gunakan salinan bertahap bawaan dari Snowflake.
Untuk menyalin data dari Snowflake, properti berikut ini didukung di bagian aktivitas Penyalinan sumber.
Properti | Deskripsi | Wajib diisi |
---|---|---|
jenis | Properti jenis sumber aktivitas Salin harus diatur ke SnowflakeV2Source. | Ya |
kueri | 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. |
Tidak |
pengaturan ekspor | Pengaturan lanjutan digunakan untuk mengambil data dari Snowflake. Anda dapat mengonfigurasi elemen yang didukung oleh perintah COPY INTO yang akan diteruskan oleh layanan saat Anda menjalankan pernyataan. | Ya |
Di bawah exportSettings : |
||
jenis | Jenis perintah ekspor, diatur ke SnowflakeExportCopyCommand. | Ya |
integrasi penyimpanan | Tentukan nama integrasi penyimpanan yang Anda buat di Snowflake. Untuk langkah-langkah prasyarat penggunaan integrasi penyimpanan, lihat Mengonfigurasi integrasi penyimpanan Snowflake. | Tidak |
opsi salinan tambahan | Opsi salin tambahan, disediakan sebagai kamus pasangan bernilai kunci. Contoh: MAX_FILE_SIZE, TIMPA. Untuk informasi selengkapnya, lihat Opsi Salin Snowflake. | Tidak |
opsiFormatTambahan | Opsi format file tambahan yang disediakan untuk SALIN perintah sebagai kamus pasangan nilai kunci. Contoh: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT, NULL_IF. Untuk informasi selengkapnya, lihat Opsi Tipe Format Snowflake. Saat Anda menggunakan NULL_IF, nilai NULL di Snowflake dikonversi ke nilai yang ditentukan (yang perlu dikelilingi oleh tanda petik tunggal) saat menulis ke file teks yang dibatasi di penyimpanan staging. Nilai yang ditentukan ini diperlakukan sebagai NULL saat membaca dari file staging ke penyimpanan tujuan. Nilai defaultnya adalah 'NULL' . |
Tidak |
Catatan
Pastikan Anda memiliki izin untuk menjalankan perintah berikut dan mengakses INFORMATION_SCHEMA skema dan KOLOM tabel.
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 Copy untuk langsung menyalin dari Snowflake ke sink. Layanan memeriksa pengaturan dan gagal menjalankan aktivitas Salin jika kriteria berikut tidak terpenuhi:
Saat Anda menentukan
storageIntegration
di sumber:Penyimpanan data sink adalah Azure Blob Storage yang Anda rujuk di tahap eksternal di Snowflake. Anda perlu menyelesaikan langkah-langkah berikut sebelum menyalin data:
Buat layanan tertaut Azure Blob Storage untuk sink Azure Blob Storage dengan jenis autentikasi yang didukung.
Berikan setidaknya peran Kontributor Data Blob Penyimpanan ke perwakilan layanan Snowflake di sink Azure Blob Storage Access Control (IAM).
Saat Anda tidak menentukan
storageIntegration
di sumber:Layanan tertaut penghubung adalah penyimpanan Azure Blob dengan autentikasi "tanda tangan akses bersama". Jika Anda ingin langsung menyalin data ke Azure Data Lake Storage Gen2 dalam format yang didukung berikut, Anda dapat membuat layanan tertaut Azure Blob Storage dengan autentikasi SAS terhadap akun Azure Data Lake Storage Gen2 Anda, untuk menghindari penggunaan salinan bertahap dari Snowflake.
Format data sink adalah Parquet, teks terpisah, atau JSON dengan konfigurasi berikut:
- Untuk format Parquet , codec kompresinya adalah None, Snappy, atau Lzo.
- Untuk format teks yang dibatasi :
-
rowDelimiter
adalah\r\n, atau karakter tunggal apa pun. -
compression
dapat berupa tanpa kompresi, gzip, bzip2, atau deflate. -
encodingName
dibiarkan sebagai default atau diatur ke utf-8. -
quoteChar
adalah tanda kutip ganda, kutipan tunggal, atau string kosong (tanpa karakter kutipan).
-
- Untuk format JSON , salinan langsung hanya mendukung kasus tabel atau hasil kueri Snowflake sumber hanya memiliki satu kolom dan tipe data kolom ini adalah VARIAN, OBJECT, atau ARRAY.
-
compression
dapat berupa tanpa kompresi, gzip, bzip2, atau deflate. -
encodingName
dibiarkan sebagai default atau diatur ke utf-8. -
filePattern
di sink aktivitas salin dibiarkan sebagai default atau diatur ke setOfObjects.
-
Dalam aktivitas penyalinan, sumber
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",
"query": "SELECT * FROM MYTABLE",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"additionalCopyOptions": {
"MAX_FILE_SIZE": "64000000",
"OVERWRITE": true
},
"additionalFormatOptions": {
"DATE_FORMAT": "'MM/DD/YYYY'"
},
"storageIntegration": "< Snowflake storage integration name >"
}
},
"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. Lihat Salinan bertahap untuk detail tentang menyalin data dengan menggunakan penahapan.
Untuk menggunakan fitur ini, buat layanan tertaut penyimpanan Azure Blob yang mengacu pada akun penyimpanan Azure sebagai penahapan sementara. Lalu tentukan propertienableStaging
stagingSettings
dalam aktivitas Salin.
Saat Anda menentukan
storageIntegration
di sumber, penyimpanan sementara Azure Blob Storage harus merupakan yang Anda rujuk pada tahap eksternal di Snowflake. Pastikan Anda membuat layanan terhubung Azure Blob Storage dengan autentikasi yang didukung saat menggunakan runtime integrasi Azure, atau dengan metode autentikasi anonim, kunci akun, tanda tangan akses bersama, atau perwakilan layanan saat menggunakan runtime integrasi yang dihost sendiri. Selain itu, berikan setidaknya peran Kontributor Data Blob Penyimpanan ke perwakilan layanan Snowflake dalam penahapan Azure Blob Storage Access Control (IAM).Saat Anda tidak menentukan
storageIntegration
di sumbernya, layanan tertaut Azure Blob Storage penahapan harus menggunakan autentikasi tanda tangan akses bersama, seperti yang diperlukan oleh perintah Snowflake COPY. Pastikan Anda memberikan izin akses yang tepat ke Snowflake dalam penahapan Azure Blob Storage. Untuk mempelajari selengkapnya tentang 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",
"query": "SELECT * FROM MyTable",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"sink": {
"type": "<sink type>"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Saat melakukan salinan bertahap dari Snowflake, sangat penting untuk mengatur Perilaku Salin Sink untuk Menggabungkan File. Pengaturan ini memastikan bahwa semua file yang dipartisi ditangani dan digabungkan dengan benar, mencegah masalah di mana hanya file terakhir yang dipartisi yang disalin.
Contoh Konfigurasi
{
"type": "Copy",
"source": {
"type": "SnowflakeSource",
"query": "SELECT * FROM my_table"
},
"sink": {
"type": "AzureBlobStorage",
"copyBehavior": "MergeFiles"
}
}
Catatan
Jika Perilaku Salin Sink tidak diatur ke Menggabungkan File dapat menyebabkan hanya file terakhir yang dipartisi disalin.
Snowflake sebagai tujuan data
Konektor Snowflake menggunakan perintah COPY into [table] Snowflake untuk mencapai performa terbaik. Selain itu, mendukung penulisan data ke Snowflake di Azure.
Jika penyimpanan dan format data sumber secara asli didukung oleh perintah COPY Snowflake, Anda dapat menggunakan aktivitas Salin untuk langsung menyalin dari sumber ke Snowflake. Untuk detailnya, silakan merujuk ke Salinan Langsung ke Snowflake. Jika tidak, gunakan salinan bertahap bawaan ke Snowflake.
Untuk menyalin data ke Snowflake, properti berikut ini didukung di bagian sink Salin Copy activity.
Properti | Deskripsi | Wajib diisi |
---|---|---|
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. | Tidak |
pengaturan impor | Pengaturan lanjutan digunakan untuk menulis data ke Snowflake. Anda dapat mengonfigurasi elemen yang didukung oleh perintah COPY INTO yang akan diteruskan oleh layanan saat Anda menjalankan pernyataan. | Ya |
Di bawah importSettings : |
||
jenis | Jenis perintah impor, diatur ke SnowflakeImportCopyCommand. | Ya |
integrasi penyimpanan | Tentukan nama integrasi penyimpanan yang Anda buat di Snowflake. Untuk langkah-langkah prasyarat penggunaan integrasi penyimpanan, lihat Mengonfigurasi integrasi penyimpanan Snowflake. | Tidak |
opsi salinan tambahan | Opsi salin tambahan, disediakan sebagai kamus pasangan bernilai kunci. Contoh: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Untuk informasi selengkapnya, lihat Opsi Salin Snowflake. | Tidak |
opsiFormatTambahan | Opsi format file tambahan yang disediakan untuk perintah SALIN sebagai kamus pasangan nilai kunci. Contoh: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Untuk informasi selengkapnya, lihat Opsi Tipe Format Snowflake. | Tidak |
Catatan
Pastikan Anda memiliki izin untuk menjalankan perintah berikut dan mengakses INFORMATION_SCHEMA skema dan KOLOM tabel.
SELECT CURRENT_REGION()
COPY INTO <table>
SHOW REGIONS
CREATE OR REPLACE STAGE
DROP STAGE
Salin langsung ke Snowflake
Jika penyimpanan data dan format sumber Anda memenuhi kriteria yang dijelaskan di bagian ini, Anda dapat menggunakan aktivitas Salin untuk langsung menyalin dari sumber ke Snowflake. Layanan memeriksa pengaturan dan gagal menjalankan aktivitas Salin jika kriteria berikut tidak terpenuhi:
Saat Anda menentukan
storageIntegration
pada penampung:Penyimpanan data sumber adalah Azure Blob Storage yang Anda rujuk di tahap eksternal di Snowflake. Anda perlu menyelesaikan langkah-langkah berikut sebelum menyalin data:
Buat layanan tertaut Azure Blob Storage untuk sumber Azure Blob Storage dengan salah satu jenis autentikasi yang didukung.
Berikan setidaknya peran Pembaca Data Blob Penyimpanan ke perwakilan layanan Snowflake di Sumber Azure Blob Storage Access Control (IAM).
Saat Anda tidak menentukan
storageIntegration
pada wastafelLayanan tertaut sumber adalah penyimpanan Azure Blob dengan autentikasi tanda tangan akses bersama. Jika Anda ingin langsung menyalin data dari Azure Data Lake Storage Gen2 dalam format yang didukung berikut, Anda dapat membuat layanan tertaut Azure Blob Storage dengan autentikasi SAS terhadap akun Azure Data Lake Storage Gen2 Anda, untuk menghindari penggunaan salinan bertahap ke Snowflake.
Format data sumber adalah Parquet, Teks berbatas, atau JSON dengan konfigurasi berikut:
Untuk format Parquet, codec kompresi adalah Tanpa atau Snappy.
Untuk format teks yang dibatasi :
-
rowDelimiter
adalah\r\n, atau karakter tunggal apa pun. Jika pemisah baris tidak "\r\n", makafirstRowAsHeader
harus false, danskipLineCount
tidak boleh ditentukan. -
compression
dapat berupa tanpa kompresi, gzip, bzip2, atau deflate. -
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-3", "ISO-8859-4", "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". -
quoteChar
adalah tanda kutip ganda, kutipan tunggal, atau string kosong (tanpa karakter kutipan).
-
Untuk format JSON, salinan langsung hanya mendukung kasus di mana tabel Snowflake target hanya memiliki satu kolom dan jenis data kolom ini adalah VARIANT, OBJECT, atau ARRAY.
-
compression
dapat berupa tanpa kompresi, gzip, bzip2, atau deflate. -
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
, ,modifiedDateTimeStart
modifiedDateTimeEnd
, danenablePartitionDiscovery
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"
},
"storageIntegration": "< Snowflake storage integration name >"
}
}
}
}
]
Penyalinan 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 COPY untuk memuat data ke dalam Snowflake. Akhirnya, ini membersihkan data sementara Anda dari penyimpanan blob. Lihat Salinan bertahap untuk detail tentang menyalin data menggunakan penahapan.
Untuk menggunakan fitur ini, buat layanan tertaut penyimpanan Azure Blob yang mengacu pada akun penyimpanan Azure sebagai penahapan sementara. Lalu tentukan propertienableStaging
stagingSettings
dalam aktivitas Salin.
Saat Anda menentukan
storageIntegration
di sink, penahapan sementara Azure Blob Storage harus menjadi salah satu yang Anda rujuk di tahap eksternal di Snowflake. Pastikan Anda membuat layanan terhubung Azure Blob Storage dengan autentikasi yang didukung saat menggunakan runtime integrasi Azure, atau dengan metode autentikasi anonim, kunci akun, tanda tangan akses bersama, atau perwakilan layanan saat menggunakan runtime integrasi yang dihost sendiri. Selain itu, berikan setidaknya peran Pembaca Data Blob Penyimpanan ke perwakilan layanan Snowflake dalam penahapan Azure Blob Storage Access Control (IAM).Saat Anda tidak menentukan
storageIntegration
di sink, layanan tertaut Azure Blob Storage penahapan perlu menggunakan autentikasi Shared Access Signature (SAS) sebagaimana yang diperlukan oleh perintah Snowflake COPY.
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",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Pemetaan properti 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 pemetaan aliran data. 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 dapat mengedit properti ini di tab Opsi sumber . Konektor menggunakan transfer data internal Snowflake.
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. | Tidak | string |
(hanya untuk himpunan data sebaris) tableName (nama tabel) nama skema |
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, misalnya select * from "schema"."myTable" . |
Tidak | string | kueri |
Aktifkan ekstrak inkremental (Pratinjau) | Gunakan opsi ini untuk memberi tahu ADF untuk hanya memproses baris yang telah berubah sejak terakhir kali alur dijalankan. | Tidak | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) | aktifkanCdc |
Kolom Bertahap | Saat menggunakan fitur ekstrak inkremental, Anda harus memilih kolom tanggal/waktu/numerik yang ingin Anda gunakan sebagai penanda di tabel sumber Anda. | Tidak | string | kolom tanda air |
Aktifkan Pelacakan Perubahan Snowflake (Pratinjau) | Opsi ini memungkinkan ADF memanfaatkan teknologi pencatatan perubahan data Snowflake untuk memproses hanya data delta yang terjadi sejak eksekusi pipeline sebelumnya. Opsi ini secara otomatis memuat data delta dengan operasi penyisipan baris, pembaruan, dan penghapusan tanpa memerlukan kolom tambahan apa pun. | Tidak | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) | aktifkanNativeCdc |
Perubahan Bersih | Saat menggunakan pelacakan perubahan snowflake, Anda dapat menggunakan opsi ini untuk mendapatkan baris yang berubah tanpa duplikasi atau daftar perubahan yang lengkap. 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. | Tidak | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) | Perubahan Jaringan |
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. | Tidak | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) | 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. | Tidak | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) | 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 Pengambilan Data Perubahan dan memilih Pelacakan Perubahan Snowflake, kami membuat objek Stream untuk tabel sumber yang memungkinkan pelacakan perubahan pada tabel sumber Snowflake. 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, atau pengguna mungkin melihat perilaku yang tidak konsisten dalam perubahan yang ditangkap.
Transformasi penampung
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 internal Snowflake.
Nama | Deskripsi | Wajib diisi | Nilai yang diizinkan | Properti skrip aliran data |
---|---|---|---|---|
Metode pembaruan | Tentukan operasi apa yang diizinkan di tujuan Snowflake Anda. Untuk memperbarui, menyisipkan atau menghapus baris, Transformasi Ubah Baris diperlukan untuk menandai baris untuk tindakan tersebut. |
Ya |
true atau false |
dapat dihapus dapat disisipkan dapat diperbarui dapat dibuat upsert |
Kolom utama | Untuk pembaruan, penyisipan atau penghapusan, kolom kunci atau beberapa kolom harus diatur untuk menentukan baris mana yang akan diubah. | Tidak | 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 dihilangkan dan dibuat ulang. Diperlukan jika membuat tabel baru secara dinamis. - Truncate: Semua baris dari tabel target akan dihapus. |
Tidak |
true atau false |
menciptakan kembali Memangkas |
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.
Pemetaan jenis data untuk Snowflake V2
Saat Anda menyalin data dari Snowflake, pemetaan berikut digunakan dari jenis data Snowflake ke jenis data sementara dalam layanan secara internal. Untuk memahami bagaimana aktivitas penyalinan memetakan skema sumber dan jenis data ke tujuan, lihat Pemetaan skema dan jenis data.
Jenis data Snowflake | Jenis data sementara layanan |
---|---|
NOMOR (p,0) | Desimal |
NUMBER (p,s where s>0) | Desimal |
Mengapung | Dobel |
VARCHAR | string |
CHAR | string |
BINER | Byte[] |
Boolean | Boolean (tipe data yang hanya memiliki dua nilai: true atau false) |
tanggal | Tanggal dan Waktu |
WAKTU | Rentang Waktu |
TIMESTAMP_LTZ | Pengaturan Waktu & Tanggal |
TIMESTAMP_NTZ | Pengaturan Waktu & Tanggal |
TIMESTAMP_TZ | Pengaturan Waktu & Tanggal |
VARIAN | string |
BENDA | string |
ARRAY | string |
Properti aktivitas pencarian data
Untuk informasi selengkapnya tentang properti, lihat Aktivitas pencarian.
Siklus hidup dan peningkatan konektor Snowflake
Tabel berikut menunjukkan tahap rilis dan catatan perubahan untuk berbagai versi konektor Snowflake.
Versi | Tahap rilis | Riwayat Perubahan |
---|---|---|
Snowflake V1 | Akhir dukungan diumumkan | / |
Snowflake V2 (versi 1.0) | Versi GA tersedia | • Tambahkan dukungan untuk autentikasi pasangan kunci. • Tambahkan dukungan untuk storageIntegration dalam aktivitas Salin. • Properti accountIdentifier , warehouse , database , schema dan role digunakan untuk membuat koneksi alih-alih connectionstring properti.• Tambahkan dukungan untuk Desimal dalam aktivitas Pencarian. Jenis NUMBER, seperti yang didefinisikan dalam Snowflake, akan ditampilkan sebagai string dalam aktivitas Pencarian. Jika Anda ingin menutupinya ke jenis numerik di V2, Anda dapat menggunakan parameter alur dengan fungsi int atau fungsi float. Misalnya, int(activity('lookup').output.firstRow.VALUE) , float(activity('lookup').output.firstRow.VALUE) • jenis data tanda waktu di Snowflake dibaca sebagai jenis data DateTimeOffset dalam aktivitas Pencarian dan Skrip. Jika Anda masih perlu menggunakan nilai Datetime sebagai parameter dalam alur Anda setelah memutakhirkan ke V2, Anda dapat mengonversi jenis DateTimeOffset ke jenis DateTime dengan menggunakan fungsi formatDateTime (disarankan) atau fungsi concat. Misalnya: formatDateTime(activity('lookup').output.firstRow.DATETIMETYPE) , concat(substring(activity('lookup').output.firstRow.DATETIMETYPE, 0, 19), 'Z') • ANGKA (p,0) dibaca sebagai Jenis data desimal. • TIMESTAMP_LTZ, TIMESTAMP_NTZ, dan TIMESTAMP_TZ dibaca sebagai jenis data DateTimeOffset. • Parameter skrip 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. • Beberapa eksekusi pernyataan SQL dalam aktivitas Skrip tidak didukung. |
Snowflake V2 (versi 1.1) | Versi pratinjau tersedia | • Tambahkan dukungan untuk parameter skrip. • Tambahkan dukungan untuk beberapa eksekusi pernyataan dalam aktivitas Skrip. |
Meningkatkan konektor Snowflake dari V1 ke V2
Untuk meningkatkan konektor Snowflake dari V1 ke V2, Anda dapat melakukan peningkatan paralel, atau peningkatan langsung.
Peningkatan berdampingan
Untuk melakukan peningkatan paralel, ikuti langkah-langkah berikut:
- Buat layanan tertaut Snowflake baru dan konfigurasikan dengan merujuk ke properti layanan tertaut V2.
- Buat himpunan data berdasarkan layanan tertaut Snowflake yang baru dibuat.
- Ganti layanan tertaut dan himpunan data baru dengan yang sudah ada di alur yang menargetkan objek V1.
Peningkatan langsung
Untuk melakukan peningkatan di tempat, Anda perlu mengedit payload layanan tertaut yang ada dan memperbarui himpunan data untuk menggunakan layanan tertaut baru.
Perbarui jenis dari Snowflake ke SnowflakeV2.
Ubah payload layanan tertaut dari format V1-nya ke V2. Anda dapat mengisi setiap bidang dari antarmuka pengguna setelah mengubah jenis yang disebutkan di atas, atau memperbarui payload langsung melalui JSON Editor. Lihat bagian Properti layanan tertaut di artikel ini untuk properti koneksi yang didukung. Contoh berikut menunjukkan perbedaan pada payload untuk layanan tertaut Snowflake V1 dan V2:
Payload JSON dari layanan yang terhubung Snowflake V1:
{ "name": "Snowflake1", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "annotations": [], "type": "Snowflake", "typeProperties": { "authenticationType": "Basic", "connectionString": "jdbc:snowflake://<fake_account>.snowflakecomputing.com/?user=FAKE_USER&db=FAKE_DB&warehouse=FAKE_DW&schema=PUBLIC", "encryptedCredential": "<your_encrypted_credential_value>" }, "connectVia": { "referenceName": "AzureIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
Payload JSON layanan terhubung Snowflake V2:
{ "name": "Snowflake2", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "parameters": { "schema": { "type": "string", "defaultValue": "PUBLIC" } }, "annotations": [], "type": "SnowflakeV2", "typeProperties": { "authenticationType": "Basic", "accountIdentifier": "<FAKE_Account>", "user": "FAKE_USER", "database": "FAKE_DB", "warehouse": "FAKE_DW", "encryptedCredential": "<placeholder>" }, "connectVia": { "referenceName": "AutoResolveIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
Perbarui himpunan data untuk menggunakan layanan tertaut baru. Anda dapat membuat himpunan data baru berdasarkan layanan tertaut yang baru dibuat, atau memperbarui properti jenis himpunan data yang ada dari SnowflakeTable ke SnowflakeV2Table.
Catatan
Saat pemindahan layanan terkait, bagian parameter templat pengaturan ulang mungkin hanya menampilkan properti database. Anda dapat mengatasinya dengan mengedit parameter secara manual. Setelah itu bagian Ambil alih parameter templat akan menampilkan string koneksi.
Tingkatkan konektor Snowflake V2 dari versi 1.0 ke versi 1.1 (Pratinjau)
Di halaman Edit Layanan Terkait, pilih 1.1 untuk versi. Untuk informasi selengkapnya, lihat Properti layanan tertaut.
Konten terkait
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas Salin, lihat penyimpanan dan format data yang didukung.