Salin serta 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 untuk menyalin data dari dan ke server FTP (SFTP) yang aman, serta menggunakan Data Flow untuk mengubah data di server SFTP. Untuk mempelajari selengkapnya, baca artikel pengantar untuk Azure Data Factory atau Azure Synapse Analytics.
Kemampuan yang didukung
Konektor SFTP ini didukung untuk kemampuan berikut:
Kemampuan yang didukung | IR |
---|---|
Salin aktivitas (sumber/sink) | (1) (2) |
Memetakan aliran data (sumber/sink) | (1) |
Aktivitas pencarian | (1) (2) |
Aktivitas GetMetadata | (1) (2) |
Aktivitas penghapusan | (1) (2) |
① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri
Secara khusus, konektor SFTP mendukung:
- Menyalin file dari dan ke server SFTP dengan menggunakan Dasar, kunci publik SSH, atau autentikasi multifaktor.
- Menyalin file apa adanya atau dengan memilah atau membuat file menggunakan format file dan codec pemadatan yang didukung.
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.
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 izinkan.
Anda juga dapat menggunakan fitur runtime integrasi jaringan virtual terkelola di Azure Data Factory untuk mengakses jaringan lokal tanpa menginstal dan mengonfigurasi runtime integrasi yang dihosting sendiri.
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:
- Alat Penyalinan Data
- Portal Microsoft Azure
- SDK .NET
- SDK Python
- Azure PowerShell
- REST API
- Templat Azure Resource Manager
Membuat layanan tertaut SFTP menggunakan UI
Gunakan langkah-langkah berikut untuk membuat layanan tertaut SFTP di UI portal Azure.
Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:
Cari SFTP dan pilih konektor SFTP.
Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.
Detail konfigurasi konektor
Bagian berikut memberikan detail tentang properti yang digunakan untuk menentukan entitas tertentu untuk SFTP.
Properti layanan tertaut
Properti berikut didukung untuk layanan tertaut SFTP:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis harus diatur ke Sftp. | Ya |
tuan rumah | Nama atau alamat IP server SFTP. | Ya |
pelabuhan | Port tempat server SFTP mendengarkan. Nilai yang diperbolehkan adalah bilangan bulat, dan nilai defaultnya adalah 22. |
No |
skipHostKeyValidation | Tentukan apakah akan melewatkan validasi kunci host. Nilai yang diperbolehkan adalah true dan false (default). |
No |
hostKeyFingerprint | Tentukan sidik jari kunci host. | Ya, jika "skipHostKeyValidation" diatur ke false. |
authenticationType | Tentukan jenis autentikasi. Nilai yang diperbolehkan adalah Basic, SshPublicKey dan MultiFactor. Untuk properti lainnya, lihat bagian Menggunakan autentikasi dasar/basic. Untuk contoh JSON, lihat bagian Menggunakan autentikasi kunci umum SSH. |
Ya |
connectVia | Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Untuk mempelajari selengkapnya, lihat bagian Prasyarat. Jika runtime integrasi tidak ditentukan, layanan akan menggunakan Integration Runtime Azure default. | No |
Menggunakan autentikasi dasar
Untuk menggunakan autentikasi dasar/basic, atur properti authenticationType ke Basic, dan tentukan properti berikut selain dari properti generik konektor SFTP yang diperkenalkan di bagian sebelumnya:
Properti | Deskripsi | Wajib diisi |
---|---|---|
userName | Pengguna yang memiliki akses ke server SFTP. | Ya |
kata sandi | Kata sandi untuk pengguna (userName). Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman, atau referensikan rahasia yang disimpan di brankas kunci Azure. | Ya |
Contoh:
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Menggunakan autentikasi kunci umum SSH
Untuk menggunakan autentikasi kunci umum SSH, atur properti "authenticationType" sebagai SshPublicKey, dan tentukan properti berikut selain dari properti generik konektor SFTP yang diperkenalkan di bagian terakhir:
Properti | Deskripsi | Wajib diisi |
---|---|---|
userName | Pengguna yang memiliki akses ke server SFTP. | Ya |
privateKeyPath | Tentukan jalur pasti ke file kunci privat yang dapat diakses oleh runtime integrasi. Ini hanya berlaku ketika jenis runtime integrasi yang dihost sendiri ditentukan dalam "connectVia." | Tentukan antara privateKeyPath atau privateKeyContent . |
privateKeyContent | Konten kunci privat SSH yang dikodekan Base64. Kunci privat SSH harus berformat OpenSSH. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman, atau referensikan rahasia yang disimpan di brankas kunci Azure. | Tentukan antara privateKeyPath atau privateKeyContent . |
passPhrase | Tentukan kata kunci atau kata sandi untuk mendekripsi kunci privat jika file kunci atau konten kunci dilindungi oleh kata kunci. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman, atau referensikan rahasia yang disimpan di brankas kunci Azure. | Ya, jika file kunci privat atau konten kunci dilindungi oleh kata kunci. |
Catatan
Konektor SFTP mendukung kunci OpenSSH RSA/DSA. Pastikan konten file kunci Anda dimulai dengan "-----BEGIN [RSA/DSA] PRIVATE KEY-----". Jika file kunci privatnya adalah file berformat PPK, gunakan alat PuTTY untuk mengonversi dari format PPK ke OpenSSH.
Contoh 1: Autentikasi SshPublicKey menggunakan kunci privat filePath
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "xxx",
"privateKeyPath": "D:\\privatekey_openssh",
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Contoh 2: Autentikasi SshPublicKey menggunakan konten kunci privat
{
"name": "SftpLinkedService",
"type": "Linkedservices",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "<username>",
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 string of the private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Gunakan autentikasi multifaktor
Untuk menggunakan autentikasi multifaktor yang merupakan kombinasi dari autentikasi dasar/basic dan kunci umum SSH, tentukan nama pengguna, kata sandi, dan info kunci privat yang dijelaskan di bagian di atas.
Contoh: autentikasi multifaktor
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<host>",
"port": 22,
"authenticationType": "MultiFactor",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 encoded private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<passphrase for private key>"
}
},
"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.
Azure Data Factory mendukung jenis format file berikut. Lihat setiap artikel untuk mengetahui cara melakukan pengaturan berbasis format.
- Format Avro
- Format Biner
- Format teks terpisah
- Format Excel
- Format JSON
- Format ORC
- Format Parquet
- Format XML
Properti berikut ini didukung untuk SFTP di bawah pengaturan location
dalam himpunan data berbasis format:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis di bawah location dalam himpunan data harus diatur ke SftpLocation. |
Ya |
folderPath | Jalur ke folder. Jika Anda ingin menggunakan kartubebas untuk memfilter folder, lewati pengaturan ini dan tentukan jalur dalam pengaturan sumber aktivitas. | No |
fileName | Nama file di bawah folderPath yang ditentukan. Jika Anda ingin menggunakan kartubebas untuk memfilter file, lewati pengaturan ini dan tentukan nama file dalam pengaturan sumber aktivitas. | No |
Contoh:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "SftpLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
Properti aktivitas salin
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikelAlur. Bagian ini menyediakan daftar properti yang didukung oleh sumber SFTP.
SFTP sebagai sumber
Azure Data Factory mendukung jenis format file berikut. Lihat setiap artikel untuk mengetahui cara melakukan pengaturan berbasis format.
- Format Avro
- Format Biner
- Format teks terpisah
- Format Excel
- Format JSON
- Format ORC
- Format Parquet
- Format XML
Properti berikut ini didukung untuk SFTP di bawah pengaturan storeSettings
dalam sumber Salin berbasis format:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis di bawah storeSettings harus diatur ke SftpReadSettings. |
Ya |
Menemukan file yang akan disalin | ||
OPSI 1: jalur statik |
Salin dari jalur folder/ jalur file yang ditentukan dalam himpunan data. Jika Anda ingin menyalin semua file dari folder, tentukan juga wildcardFileName sebagai * . |
|
OPSI 2: kartubebas - wildcardFolderPath |
Jalur folder dengan karakter kartubebas untuk memfilter folder sumber. Kartubebas yang diizinkan adalah * (cocok dengan nol karakter atau lebih) dan ? (cocok dengan nol atau satu karakter); gunakan ^ untuk escape jika nama folder Anda yang sebenarnya memiliki kartubebas atau karakter escape ini di dalamnya. Untuk contoh lainnya, lihat Contoh filter folder dan file. |
No |
OPSI 2: kartubebas - wildcardFileName |
Nama file dengan kartubebas di bawah folderPath/wildcardFolderPath yang ditentukan untuk memfilter file sumber. Kartubebas yang diizinkan adalah: * (cocok dengan nol karakter atau lebih) dan ? (cocok dengan nol atau satu karakter); gunakan ^ untuk escape jika nama file Anda yang sebenarnya memiliki kartubebas atau karakter escape ini di dalamnya. Untuk contoh lainnya, lihat Contoh filter folder dan file. |
Ya |
OPSI 3: daftar file - fileListPath |
Mengindikasikan untuk menyalin set file yang ditentukan. Arahkan ke file teks yang menyertakan daftar file yang ingin Anda salin (satu file per baris, dengan jalur relatif ke jalur yang dikonfigurasi dalam himpunan data). Saat Anda menggunakan opsi ini, jangan tentukan nama file di himpunan data. Untuk contoh selengkapnya, lihat Contoh daftar file. |
No |
Pengaturan tambahan | ||
recursive | Menunjukkan apakah data dibaca secara rekursif dari subfolder atau hanya dari folder yang ditentukan. Ketika rekursif diatur menjadi true dan sink-nya adalah penyimpanan berbasis file, folder atau subfolder kosong tidak disalin atau dibuat di sink. Nilai yang diizinkan adalah true (default) dan false. Properti ini tidak berlaku saat Anda mengonfigurasi fileListPath . |
No |
deleteFilesAfterCompletion | Menunjukkan apakah file biner akan dihapus dari penyimpanan sumber setelah berhasil pindah ke penyimpanan tujuan. Penghapusan file dilakukan per file, jadi ketika aktivitas salin gagal, Anda akan melihat beberapa file telah disalin ke tujuan dan dihapus dari sumbernya, sementara file yang lain masih berada di penyimpanan sumber. Properti ini hanya valid dalam skenario penyalinan file biner. Nilai default: false. |
No |
modifiedDatetimeStart | File difilter berdasarkan atribut Terakhir Diubah. File akan dipilih jika waktu modifikasi terakhir file tersebut besar dari atau sama dengan modifiedDatetimeStart dan kurang dari modifiedDatetimeEnd . Waktunya diterapkan ke zona waktu UTC dalam format 2018-12-01T05:00:00Z. Properti dapat menjadi NULL, yang berarti tidak ada filter atribut file yang akan diterapkan ke himpunan data. Ketika modifiedDatetimeStart memiliki nilai tanggalwaktu tetapi modifiedDatetimeEnd adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih besar dari atau sama dengan nilai tanggalwaktu. Ketika modifiedDatetimeEnd memiliki nilai tanggalwaktu tetapi modifiedDatetimeStart adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih kecil dari nilai tanggalwaktu.Properti ini tidak berlaku saat Anda mengonfigurasi fileListPath . |
No |
modifiedDatetimeEnd | Sama dengan atas. | No |
enablePartitionDiscovery | Untuk file yang dipartisi, tentukan apakah Anda akan memilah partisi dari jalur file dan menambahkannya sebagai kolom sumber tambahan. Nilai yang diperbolehkan adalah false (default) dan true. |
No |
partitionRootPath | Ketika penemuan partisi diaktifkan, tentukan jalur akar absolut untuk membaca folder yang dipartisi sebagai kolom data. Jika tidak ditentukan, secara default, - Ketika Anda menggunakan jalur file dalam himpunan data atau daftar file pada sumber, jalur akar partisi adalah jalur yang dikonfigurasi dalam himpunan data. - Ketika Anda menggunakan filter folder kartubebas, jalur akar partisi adalah sub-jalur sebelum kartubebas pertama. Misalnya, dengan asumsi Anda mengonfigurasi jalur dalam himpunan data sebagai "root/folder/year=2020/month=08/day=27": - Jika Anda menentukan jalur akar partisi sebagai "root/folder/year=2020", aktivitas salin akan menghasilkan dua kolom lagi month dan day dengan nilai masing-masing "08" dan "27", selain kolom di dalam file.- Jika jalur akar partisi tidak ditentukan, tidak ada kolom tambahan yang akan dihasilkan. |
No |
maxConcurrentConnections | Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan. | No |
disableChunking | Saat menyalin data dari SFTP, layanan mencoba mendapatkan panjang file terlebih dahulu, kemudian membagi file menjadi beberapa bagian dan membacanya secara paralel. Tentukan apakah server SFTP Anda mendukung mendapatkan panjang file atau berusaha membaca dari offset tertentu. Nilai yang diizinkan adalah: false (default), true. |
No |
Contoh:
"activities":[
{
"name": "CopyFromSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delimited text input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"formatSettings":{
"type": "DelimitedTextReadSettings",
"skipLineCount": 10
},
"storeSettings":{
"type": "SftpReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv",
"disableChunking": false
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
SFTP sebagai sink
Azure Data Factory mendukung jenis format file berikut. Lihat setiap artikel untuk mengetahui cara melakukan pengaturan berbasis format.
Properti berikut ini didukung untuk SFTP di bawah pengaturan storeSettings
dalam sink Salin berbasis format:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis di bawah storeSettings harus diatur ke SftpWriteSettings. |
Ya |
copyBehavior | Menentukan perilaku salin saat sumber berupa file dari penyimpanan data berbasis file. Nilai yang diperbolehkan adalah: - (default) PreserveHierarchy: Mempertahankan hierarki file di folder target. Jalur relatif dari file sumber ke folder sumber sama dengan jalur relatif file target ke folder target. - FlattenHierarchy: Semua file dari folder sumber berada di tingkat pertama folder target. File target memiliki nama yang ditulis secara otomatis. - MergeFiles: Menggabungkan semua file dari folder sumber dalam satu file. Jika nama file ditentukan, nama file yang digabungkan adalah nama yang ditentukan. Jika tidak, nama tersebut adalah nama file yang ditulis secara otomatis. |
No |
maxConcurrentConnections | Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan. | No |
useTempFileRename | Tunjukkan apakah akan mengunggah ke file sementara dan mengganti namanya, atau langsung menulis ke folder target atau lokasi file. Secara default, layanan pertama-tama menulis ke file sementara dan kemudian mengganti namanya ketika pengunggahan selesai. Urutan ini membantu (1) menghindari konflik yang dapat mengakibatkan file rusak jika Anda memiliki proses lain yang menulis ke file yang sama, dan (2) memastikan bahwa versi asli file ada selama transfer. Jika server SFTP Anda tidak mendukung operasi penggantian nama, nonaktifkan opsi ini dan pastikan Anda tidak memiliki penulisan bersamaan ke file target. Untuk informasi selengkapnya, lihat tips pemecahan masalah di akhir tabel ini. | Tidak. Nilai defaultnya adalah true. |
operasiTimeout | Waktu tunggu sebelum waktu setiap permintaan penulisan ke server SFTP habis. Nilai defaultnya adalah 60 menit (01:00:00). | No |
Tip
Jika Anda menerima kesalahan "UserErrorSftpPathNotFound," "UserErrorSftpPermission Denied", atau "SftpOperationFail" ketika Anda menulis data ke SFTP, dan pengguna SFTP yang Anda gunakan memang memiliki izin yang tepat, periksa untuk melihat apakah operasi penggantian nama file dukungan server SFTP Anda berfungsi. Jika tidak, nonaktifkan opsi Unggah dengan file sementara (useTempFileRename
) dan coba lagi. Untuk mempelajari selengkapnya tentang properti ini, lihat tabel sebelumnya. Jika Anda menggunakan IR yang dihost sendiri untuk aktivitas Salin, pastikan untuk menggunakan versi 4.6 atau yang lebih baru.
Contoh:
"activities":[
{
"name": "CopyToSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "BinarySink",
"storeSettings":{
"type": "SftpWriteSettings",
"copyBehavior": "PreserveHierarchy"
}
}
}
}
]
Contoh filter folder dan file
Bagian ini menjelaskan perilaku yang merupakan hasil dari penggunaan filter kartubebas untuk jalur folder dan nama file.
folderPath | fileName | recursive | Struktur folder sumber dan hasil filter (file dalam huruf tebal diambil) |
---|---|---|---|
Folder* |
(kosong, gunakan default) | salah | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
(kosong, gunakan default) | TRUE | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
salah | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
TRUE | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Contoh daftar file
Tabel ini menjelaskan perilaku yang merupakan hasil dari penggunaan jalur daftar file di sumber aktivitas Salin. Hal ini mengasumsikan bahwa Anda memiliki struktur folder sumber berikut dan ingin menyalin file dalam huruf tebal:
Struktur sumber sampel | Konten dalam FileListToCopy.txt | Konfigurasi Azure Data Factory |
---|---|---|
akar FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv Metadata FileListToCopy.txt |
File1.csv Subfolder1/File3.csv Subfolder1/File5.csv |
Di himpunan data: - Jalur folder: root/FolderA Di sumber aktivitas Salin: - Jalur daftar file: root/Metadata/FileListToCopy.txt Jalur daftar file menunjuk ke file teks di penyimpanan data yang sama yang menyertakan daftar file yang ingin Anda salin (satu file per baris, dengan jalur relatif ke jalur yang dikonfigurasi dalam himpunan data). |
Properti pemetaan aliran data
Saat Anda mengubah data dalam memetakan aliran data, Anda dapat membaca dan menulis file dari SFTP dalam format berikut:
Pengaturan format-spesifik terletak di dokumentasi untuk format tersebut. Untuk informasi selengkapnya, lihat Transformasi sumber dalam pemetaan aliran data dan Transformasi sink dalam pemetaan aliran data.
Catatan
Validasi kunci host SSH tidak didukung dalam pemetaan aliran data sekarang.
Catatan
Untuk mengakses server SFTP di lokasi, Anda perlu menggunakan Azure Data Factory atau ruang kerja Synapse Jaringan Virtual Terkelola menggunakan titik akhir privat. Lihat tutorial ini untuk langkah-langkah terperinci.
Transformasi sumber
Tabel di bawah mencantumkan properti yang didukung oleh sumber SFTP. Anda dapat mengedit properti ini di tab Opsi sumber. Saat menggunakan set data sebaris, Anda akan melihat setelan tambahan, yang sama dengan properti yang dijelaskan di bagian properti himpunan data.
Nama | Deskripsi | Wajib diisi | Nilai yang diizinkan | Properti skrip aliran data |
---|---|---|---|---|
Jalur wildcard | Menggunakan pola wildcard akan menginstruksikan ADF untuk mengulang setiap folder dan file yang cocok dalam transformasi sumber tunggal. Cara ini efektif untuk memproses beberapa file dalam satu aliran. | No | Tali[] | wildcardPaths |
Jalur Akur Partisi | Jika Anda telah mempartisi folder dalam sumber file dengan format key=value (misalnya,year=2019 ), maka Anda dapat menetapkan tingkat teratas pohon folder partisi tersebut ke nama kolom di dalam aliran data pada aliran data. |
No | String | partitionRootPath |
Izinkan file tidak ditemukan | Jika true, kesalahan tidak akan terjadi jika tidak ada file yang ditemukan. | No |
true atau false |
ignoreNoFilesFound |
Daftar file | Ini adalah kumpulan file. Buat file teks yang menyertakan daftar file jalur relatif untuk diproses. Arahkan ke file teks ini. | No |
true atau false |
fileList |
Kolom untuk menyimpan nama file | Simpan nama file sumber dalam kolom di data Anda. Masukkan nama kolom baru di sini untuk menyimpan untai (karakter) nama file. | No | String | rowUrlColumn |
Setelah selesai | Pilih untuk tidak melakukan apa pun dengan file sumber setelah aliran data menjalankan, menghapus, atau memindahkan file sumber. Jalur untuk perpindahan bersifat relatif. | No | Hapus: true atau false Pindah: ['<from>', '<to>'] |
purgeFiles moveFiles |
Filter menurut terakhir diubah | Anda dapat memfilter file mana yang Anda proses dengan menentukan rentang tanggal kapan terakhir diubah. Semua waktu dalam format UTC. | No | Tanda Waktu | modifiedAfter modifiedBefore |
Contoh skrip sumber SFTP
Saat menggunakan himpunan data SFTP sebagai jenis sumber, skrip aliran data terkait adalah:
source(allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: true,
purgeFiles: true,
fileList: true,
modifiedAfter: (toTimestamp(1647388800000L)),
modifiedBefore: (toTimestamp(1647561600000L)),
partitionRootPath: 'partdata',
wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource
Transformasi sink
Tabel di bawah ini mencantumkan properti yang didukung oleh sink SFTP. Anda bisa mengedit properti ini ditab Pengaturan. Saat menggunakan himpunan data sebaris, Anda akan melihat pengaturan tambahan, yang sama dengan properti yang dijelaskan di bagian properti himpunan data.
Nama | Deskripsi | Wajib diisi | Nilai yang diizinkan | Properti skrip aliran data |
---|---|---|---|---|
Menghapus folder | Menentukan apakah folder tujuan dibersihkan atau tidak sebelum data ditulis. | No |
true atau false |
Memotong |
Opsi nama file | Format penamaan data yang ditulis. Secara default, satu file per partisi dalam format part-#####-tid-<guid> . |
No | Pola: String Per partisi: String[] Nama file sebagai data kolom: String Nama folder sebagai data kolom: String Output ke satu file: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn rowFolderUrlColumn partitionFileNames |
Kutip semua | Menentukan apakah akan menyertakan semua nilai dalam tanda kutip. | No |
true atau false |
quoteAll |
Contoh skrip sink SFTP
Saat Anda menggunakan himpunan data SFTP sebagai jenis sink, skrip aliran data terkait adalah:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
filePattern:'loans[n].csv',
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SFTPSink
Properti aktivitas pencarian
Untuk informasi tentang properti aktivitas Pencarian, lihat Aktivitas pencarian.
Properti aktivitas GetMetadata
Untuk informasi tentang properti aktivitas GetMetadata, lihat aktivitas GetMetadata.
Properti aktivitas penghapusan
Untuk informasi tentang Hapus properti aktivitas, lihat Menghapus aktivitas.
Model warisan
Catatan
Model berikut ini masih didukung sebagaimana adanya untuk kompatibilitas mundur. Kami menyarankan Anda menggunakan model baru yang dibahas sebelumnya, karena antarmuka pengguna penulisan telah beralih untuk menghasilkan model baru.
Model himpunan data warisan
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis himpunan data harus diatur ke FileShare. | Ya |
folderPath | Jalur ke folder. Filter kartubebas didukung. Kartubebas yang diizinkan adalah * (cocok dengan nol karakter atau lebih) dan ? (cocok dengan nol atau satu karakter); gunakan ^ untuk escape jika nama file Anda yang sebenarnya memiliki kartubebas atau karakter escape ini di dalamnya. Contoh: rootfolder/subfolder/, lihat contoh lainnya dalam Contoh filter folder dan file. |
Ya |
fileName |
Nama atau filter kartubebas untuk file di bawah "folderPath" yang ditentukan. Jika Anda tidak menentukan nilai untuk properti ini, himpunan data akan menunjuk ke semua file dalam folder. Kartubebas yang diperbolehkan untuk filter adalah * (cocok dengan nol karakter atau lebih) dan ? (cocok dengan nol atau satu karakter).- Contoh 1: "fileName": "*.csv" - Contoh 2: "fileName": "???20180427.txt" Gunakan ^ untuk escape jika nama folder Anda yang sebenarnya memiliki kartubebas atau karakter escape di dalamnya. |
No |
modifiedDatetimeStart | File difilter berdasarkan atribut Terakhir Diubah. File akan dipilih jika waktu modifikasi terakhir file tersebut besar dari atau sama dengan modifiedDatetimeStart dan kurang dari modifiedDatetimeEnd . Waktunya diterapkan ke zona waktu UTC dalam format 2018-12-01T05:00:00Z. Performa keseluruhan pergerakan data akan terpengaruh dengan pengaktifan pengaturan ini ketika Anda ingin melakukan filter file untuk file dalam jumlah besar. Properti dapat menjadi NULL, yang berarti tidak ada filter atribut file yang akan diterapkan ke himpunan data. Ketika modifiedDatetimeStart memiliki nilai tanggalwaktu tetapi modifiedDatetimeEnd adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih besar dari atau sama dengan nilai tanggalwaktu. Ketika modifiedDatetimeEnd memiliki nilai tanggalwaktu tetapi modifiedDatetimeStart adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih kecil dari nilai tanggalwaktu. |
No |
modifiedDatetimeEnd | File difilter berdasarkan atribut Terakhir Diubah. File akan dipilih jika waktu modifikasi terakhir file tersebut besar dari atau sama dengan modifiedDatetimeStart dan kurang dari modifiedDatetimeEnd . Waktunya diterapkan ke zona waktu UTC dalam format 2018-12-01T05:00:00Z. Performa keseluruhan pergerakan data akan terpengaruh dengan pengaktifan pengaturan ini ketika Anda ingin melakukan filter file untuk file dalam jumlah besar. Properti dapat menjadi NULL, yang berarti tidak ada filter atribut file yang akan diterapkan ke himpunan data. Ketika modifiedDatetimeStart memiliki nilai tanggalwaktu tetapi modifiedDatetimeEnd adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih besar dari atau sama dengan nilai tanggalwaktu. Ketika modifiedDatetimeEnd memiliki nilai tanggalwaktu tetapi modifiedDatetimeStart adalah NULL, ini berarti file yang dipilih adalah file yang nilai atribut terakhir diubahnya lebih kecil dari nilai tanggalwaktu. |
No |
format | Jika Anda ingin menyalin file sebagaimana adanya antar penyimpanan berbasis file (salinan biner), lewati bagian format di definisi himpunan data input dan output. Jika Anda ingin memilah file dengan format tertentu, jenis format file berikut didukung: TextFormat, JsonFormat, AvroFormat, OrcFormat, dan ParquetFormat. Atur properti jenis berdasarkan format ke salah satu nilai ini. Untuk informasi selengkapnya, lihat bagian Format Teks, Format Json, Format Avro, Format Orc, dan Format Parquet. |
Tidak (hanya untuk skenario salinan biner) |
kompresi | Tentukan jenis dan tingkat kompresi untuk data. Untuk informasi selengkapnya, lihat Format file yang didukung dan kodek pemadatan. Jenis yang didukung adalah GZip, Deflate, BZip2, dan ZipDeflate. Level yang didukung adalah: Optimal dan Tercepat. |
No |
Tip
Untuk menyalin semua file di sebuah folder, tentukan folderPath saja.
Untuk menyalin satu file dengan nama tertentu, tentukan folderPath dengan bagian folder dan fileName dengan nama file.
Untuk menyalin subset file di bawah satu folder, tentukan folderPath dengan bagian folder dan fileName dengan filter kartubebas.
Catatan
Jika Anda menggunakan properti fileFilter untuk filter file, properti ini masih didukung apa adanya, tetapi sebaiknya Anda menggunakan kapabilitas filter baru yang ditambahkan ke fileName mulai dari sekarang.
Contoh:
{
"name": "SFTPDataset",
"type": "Datasets",
"properties": {
"type": "FileShare",
"linkedServiceName":{
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"folderPath": "folder/subfolder/",
"fileName": "*",
"modifiedDatetimeStart": "2018-12-01T05:00:00Z",
"modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
Model sumber aktivitas Salin Warisan
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis sumber aktivitas Salin harus diatur ke FileSystemSource | Ya |
recursive | Menunjukkan apakah data dibaca secara rekursif dari subfolder atau hanya dari folder yang ditentukan. Ketika rekursif diatur menjadi true dan sink-nya adalah penyimpanan berbasis file, folder atau subfolder kosong tidak akan disalin atau dibuat di sink. Nilai yang diperbolehkan adalah true (default) dan false |
No |
maxConcurrentConnections | Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan. | No |
Contoh:
"activities":[
{
"name": "CopyFromSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<SFTP input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
Konten terkait
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas Salin, lihat penyimpanan data yang didukung.