Menyalin data ke dan dari sistem file lokal dengan menggunakan Azure Data Factory

Catatan

Artikel ini berlaku untuk versi 1 dari Azure Data Factory. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat Konektor Sistem File di V2.

Artikel ini menjelaskan cara menggunakan Aktivitas Salin di Azure Data Factory untuk menyalin data ke/dari sistem file lokal. Ini dibuat pada artikel Aktivitas Pergerakan Data, yang menyajikan ikhtisar umum pergerakan data dengan aktivitas salin.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Skenario yang didukung

Anda bisa menyalin data dari sistem file lokal ke penyimpanan data berikut:

Kategori Penyimpanan data
Azure Azure Blob Storage
Azure Data Lake Storage Gen1
Azure Cosmos DB (SQL API)
Azure SQL Database
Azure Synapse Analytics
Indeks Azure Cognitive Search
Penyimpanan Tabel Azure
Database SQL Server
Oracle
File Sistem file

Anda bisa menyalin data dari penyimpanan data berikut ke sistem file lokal:

Kategori Penyimpanan data
Azure Azure Blob Storage
Azure Cosmos DB (SQL API)
Azure Data Lake Storage Gen1
Azure SQL Database
Azure Synapse Analytics
Penyimpanan Tabel Azure
Database Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
File Amazon S3
Sistem file
FTP
HDFS
SFTP
Lainnya HTTP Generik
OData Generik
ODBC Generik
Salesforce
Tabel web (tabel dari HTML)

Catatan

Aktivitas Salin tidak menghapus file sumber setelah berhasil disalin ke tujuan. Jika Anda perlu menghapus file sumber setelah penyalinan berhasil, buat aktivitas kustom untuk menghapus file, dan gunakan aktivitas di alur.

Mengaktifkan konektivitas

Data Factory mendukung menyambungkan ke dan dari sistem file lokal melalui Data Management Gateway. Anda harus menginstal Data Management Gateway di lingkungan lokal Anda agar layanan Azure Data Factory tersambung ke penyimpanan data lokal yang didukung termasuk sistem file. Untuk mempelajari tentang Data Management Gateway dan untuk instruksi langkah demi langkah tentang menyiapkan gateway, lihat Memindahkan data antara sumber lokal dan cloud dengan Data Management Gateway. Terlepas dari Data Management Gateway, tidak ada file biner lain yang perlu diinstal untuk berkomunikasi ke dan dari sistem file lokal. Anda harus menginstal dan menggunakan Data Management Gateway meskipun sistem file berada di Azure IaaS VM. Untuk informasi selengkapnya tentang gateway, lihat Data Management Gateway.

Untuk menggunakan berbagi file Linux, instal Samba di server Linux Anda, dan instal Data Management Gateway di server Windows. Menginstal Data Management Gateway di server Linux tidak didukung.

Memulai

Anda dapat membuat alur dengan aktivitas salin yang memindahkan data ke/dari sistem file dengan menggunakan alat/API yang berbeda.

Cara termudah untuk membuat alur adalah dengan menggunakan Wizard Salin. Lihat Tutorial: Membuat alur menggunakan Wizard Salin untuk panduan singkat tentang membuat alur menggunakan Wizard Salin data.

Anda juga dapat menggunakan alat berikut untuk membuat pipeline: Visual Studio, Azure PowerShell, template Azure Resource Manager, .NET API, dan REST API. Lihat Tutorial aktivitas penyalinan untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan.

Baik Anda menggunakan alat atau API, Anda melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:

  1. Buat data factory. Data factory mungkin berisi satu atau beberapa alur.
  2. Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke data factory Anda. Misalnya, jika Anda menyalin data dari Azure blob storage ke sistem file lokal, Anda membuat dua layanan tertaut untuk menautkan sistem file lokal dan akun penyimpanan Azure ke pabrik data Anda. Untuk properti layanan tertaut yang khusus untuk sistem file lokal, lihat bagian properti layanan tertaut.
  3. Buat himpunan data untuk merepresentasikan data input dan output untuk operasi salin. Dalam contoh yang disebutkan di langkah terakhir, Anda membuat himpunan data untuk menentukan kontainer dan folder blob yang berisi input data. Dan, Anda membuat himpunan data lain untuk menentukan folder dan nama file (opsional) dalam sistem file Anda. Untuk properti himpunan data yang khusus untuk sistem file lokal, lihat bagian properti himpunan data.
  4. Buat alur dengan aktivitas salin yang mengambil himpunan data sebagai input dan himpunan data sebagai output. Dalam contoh yang disebutkan sebelumnya, Anda menggunakan BlobSource sebagai sumber dan FileSystemSink sebagai sink untuk aktivitas salin. Demikian pula, jika Anda menyalin dari sistem file lokal ke Azure Blob Storage, Anda menggunakan FileSystemSource dan BlobSink dalam aktivitas salin. Untuk properti aktivitas salin yang khusus untuk sistem file lokal, lihat bagian properti aktivitas salin. Untuk detail tentang cara menggunakan penyimpanan data sebagai sumber atau sink, klik tautan di bagian sebelumnya untuk penyimpanan data Anda.

Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) secara otomatis dibuat untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini menggunakan format JSON. Untuk contoh dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data ke/dari sistem file, lihat bagian Contoh JSON dari artikel ini.

Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Azure Data Factory khusus untuk sistem file:

Properti layanan tertaut

Anda dapat menautkan sistem file lokal ke Azure data factory dengan layanan tertaut Server File Lokal. Tabel berikut ini menyediakan deskripsi untuk elemen JSON yang khusus untuk layanan tertaut Server File lokal.

Properti Deskripsi Diperlukan
jenis Pastikan bahwa properti jenis diatur ke OnPremisesFileServer. Ya
host Menentukan alur akar folder yang ingin Anda salin. Gunakan karakter escape ' \ ' untuk karakter khusus dalam string. Lihat Sampel layanan tertaut dan definisi himpunan data untuk contoh. Ya
id pengguna Tentukan ID pengguna yang memiliki akses ke server. Tidak (jika Anda memilih encryptedCredential)
kata sandi Tentukan kata sandi untuk pengguna (userid). Tidak (jika Anda memilih encryptedCredential
encryptedCredential Tentukan kredensial terenkripsi yang bisa Anda dapatkan dengan menjalankan cmdlet New-AzDataFactoryEncryptValue. Tidak (jika Anda memilih untuk menentukan userid dan password dalam teks biasa)
gatewayName Menentukan nama gateway yang harus digunakan Azure Data Factory untuk menyambungkan ke server file lokal. Ya

Sampel layanan tertaut dan definisi himpunan data

Skenario Host dalam definisi layanan tertaut folderPath dalam definisi himpunan data
Folder lokal pada mesin Data Management Gateway:

Contoh: D:\* atau D:\folder\subfolder\*
D:\\ (untuk Data Management Gateway 2.0 dan versi yang lebih baru)

localhost (untuk versi yang lebih lama daripada Data Management Gateway 2.0)
.\\ atau folder\\subfolder folder (untuk Data Management Gateway 2.0 dan versi yang lebih baru)

D:\\ atau D:\\folder\\subfolder (untuk versi gateway di bawah 2.0)
Folder berbagi jarak jauh:

Contoh: \\myserver\share\* atau \\myserver\share\folder\subfolder\*
\\\\myserver\\share .\\ atau folder\\subfolder

Catatan

Saat penulisan melalui UI, Anda tidak perlu memasukkan garis miring terbalik ganda (\\) untuk keluar seperti yang Anda lakukan melalui JSON, namun gunakan garis miring terbalik tunggal.

Contoh: Menggunakan nama pengguna dan kata sandi dalam teks biasa

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Contoh: Menggunakan encryptedcredential

{
  "Name": " OnPremisesFileServerLinkedService ",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "D:\\",
      "encryptedCredential": "WFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5xxxxxxxxxxxxxxxxx",
      "gatewayName": "mygateway"
    }
  }
}

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat Membuat himpunan data. Bagian-bagian seperti struktur, ketersediaan, dan kebijakan himpunan data JSON serupa dengan semua jenis himpunan data.

Bagian typeProperties berbeda untuk setiap jenis himpunan data. Ini menyediakan informasi seperti lokasi dan format data di penyimpanan data. Bagian typeProperties untuk himpunan data jenis FileShare memiliki properti berikut:

Properti Deskripsi Diperlukan
folderPath Menentukan subpath ke folder. Gunakan karakter escape " untuk karakter khusus dalam string. Filter wildcard tidak didukung. Lihat Sampel layanan tertaut dan definisi himpunan data untuk contoh.

Anda dapat menggabungkan properti ini dengan partitionBy untuk memiliki alur folder berdasarkan irisan waktu mulai/tanggal akhir.
Ya
fileName Menentukan nama file dalam folderPath jika Anda ingin tabel merujuk ke file tertentu di folder. Jika Anda tidak menentukan nilai apa pun untuk properti ini, tabel akan menunjuk ke semua file dalam folder.

Ketika fileName tidak ditentukan untuk himpunan data output dan preserveHierarchy tidak ditentukan dalam sink aktivitas, nama file yang dihasilkan dalam format berikut:

Data.<Guid>.txt (Contoh: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt)
Tidak
fileFilter Tentukan filter yang akan digunakan untuk memilih subhimpunan file di folderPath dan bukan semua file.

Nilai yang diizinkan adalah: * (beberapa karakter) dan ? (karakter tunggal).

Contoh 1: "fileFilter": "*.log"
Contoh 2: "fileFilter": 2014-1-?. txt"

Perhatikan bahwa fileFilter berlaku untuk himpunan data FileShare input.
Tidak
partitionedBy Anda dapat menggunakan partitionedBy untuk menentukan folderPath/fileName dan nama file untuk data rangkaian waktu. Contohnya adalah folderPath yang di parameter untuk setiap jam data. Tidak
format Jenis format berikut didukung: TextFormat, JsonFormat, AvroFormat, OrcFormat, 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 Parket.

Jika Anda ingin menyalin file apa adanya antara penyimpanan berbasis file (salinan biner), lewati bagian format dalam definisi himpunan data input dan output.
Tidak
compression Menentukan jenis dan tingkat kompresi untuk data. Jenis yang didukung adalah: GZip, Deflate, BZip2, dan ZipDeflate. Level yang didukung adalah: Optimal dan Tercepat. lihat Format file dan kompresi di Azure Data Factory. Tidak

Catatan

Anda tidak dapat menggunakan fileName dan fileFilter secara bersamaan.

Menggunakan properti partionedBy

Seperti disebutkan di bagian sebelumnya, Anda dapat menentukan folderPath dinamis dan nama file untuk data seri waktu dengan properti partitionedBy, fungsi Data Factory, dan variabel sistem.

Untuk mempelajari tentang himpunan data, penjadwalan, dan irisan rangkaian waktu, lihat Membuat himpunan data, Penjadwalan dan eksekusi, dan Membuat alur.

Contoh 1:

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

Dalam contoh ini, {Slice} diganti dengan nilai variabel sistem Data Factory SliceStart, dalam format yang ditentukan (YYYYMMDDHH). SliceStart mengacu pada waktu mulai irisan. folderPath berbeda untuk setiap irisan. Misalnya: wikidatagateway/wikisampledataout/2014100103 atau wikidatagateway/wikisampledataout/2014100104.

Contoh 2:

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

Dalam contoh ini, tahun, bulan, hari, dan waktu SliceStart diekstraksi ke dalam variabel terpisah yang digunakan oleh folderPath dan properti fileName.

Properti aktivitas salin

Untuk daftar lengkap bagian & yang tersedia untuk menentukan himpunan data, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, himpunan data input dan output, dan kebijakan tersedia untuk semua jenis aktivitas. Sedangkan properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas.

Untuk aktivitas Salin, ini bervariasi sesuai dengan jenis sumber dan sink. Jika Anda memindahkan data dari sistem file lokal, Anda mengatur jenis sumber dalam aktivitas salin ke FileSystemSource. Demikian pula, jika Anda memindahkan data ke sistem file lokal, Anda mengatur jenis sink dalam aktivitas salinan ke FileSystemSink. Bagian ini menyediakan daftar properti yang didukung oleh FileSystemSource dan FileSystemSink.

FileSystemSource mendukung properti berikut:

Properti Deskripsi Nilai yang diizinkan Diperlukan
rekursif Menunjukkan apakah data dibaca secara berulang dari subfolder atau hanya dari folder yang ditentukan. True, False (default) Tidak

FileSystemSink mendukung properti berikut:

Properti Deskripsi Nilai yang diizinkan Diperlukan
copyBehavior Menentukan perilaku salin saat sumbernya adalah BlobSource atau FileSystem. PreserveHierarchy: mempertahankan hierarki file di folder target. Artinya, 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 dibuat dengan nama yang dihasilkan secara otomatis.

MergeFiles: menggabungkan semua file dari folder sumber ke satu file. Jika nama berkas/blob ditentukan, nama berkas yang digabungkan adalah nama yang ditentukan. Jika tidak, ini adalah nama file yang dihasilkan secara otomatis.
Tidak

contoh berulang dan copyBehavior

Bagian ini menjelaskan perilaku yang dihasilkan dari operasi Salin untuk kombinasi yang berbeda dari nilai berulang dan copyBehavior.

nilai berulang nilai copyBehavior Perilaku yang dihasilkan
TRUE preserveHierarchy Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

folder target Folder1 dibuat dengan struktur yang sama dengan sumber:

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
TRUE flattenHierarchy Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

Folder target Folder1 dibuat dengan struktur berikut:

Folder1
    nama yang dihasilkan secara otomatis untuk File1
    nama yang dibuat secara otomatis untuk File2
    nama yang dibuat secara otomatis untuk File3
    nama yang dibuat secara otomatis untuk File4
    nama yang dibuat secara otomatis untuk File5
TRUE mergeFiles Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

Folder target Folder1 dibuat dengan struktur berikut:

Folder1
    Konten File1 + File2 + File3 + File4 + File 5 digabungkan menjadi satu file dengan nama file yang dihasilkan secara otomatis.
salah preserveHierarchy Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

folder target Folder1 dibuat dengan struktur berikut:

Folder1
    File1
    File2

Subfolder1 dengan File3, File4, dan File5 tidak diambil.
salah flattenHierarchy Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

folder target Folder1 dibuat dengan struktur berikut:

Folder1
    nama yang dihasilkan secara otomatis untuk File1
    nama yang dibuat secara otomatis untuk File2

Subfolder1 dengan File3, File4, dan File5 tidak diambil.
false mergeFiles Untuk folder sumber Folder1 dengan struktur berikut,

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5

folder target Folder1 dibuat dengan struktur berikut:

Folder1
    Konten File1 + File2 digabungkan ke dalam satu file, dengan nama file yang dihasilkan secara otomatis.
    Nama yang dihasilkan secara otomatis untuk File1

Subfolder1 dengan File3, File4, dan File5 tidak diambil.

File yang didukung dan format kompresi

Lihat artikelFormat file dan kompresi di Azure Data Factory untuk detailnya.

Contoh JSON untuk menyalin data ke dan dari sistem file

Contoh berikut ini menyediakan sampel definisi JSON yang bisa Anda gunakan untuk membuat alur menggunakan Visual Studio atau Azure PowerShell. Mereka menunjukkan cara menyalin data ke dan dari sistem file lokal dan Azure Blob storage. Namun, Anda dapat menyalin data langsung dari salah satu sumber yang tercantum dalam penyimpanan dan format data yang didukung dengan menggunakan Aktivitas Salin di Azure Data Factory.

Contoh: Menyalin data dari sistem file lokal ke Azure Blob storage

Contoh ini memperlihatkan cara menyalin data dari sistem file lokal ke Azure Blob storage. Sampel memiliki entitas Data Factory berikut:

Contoh berikut menyalin data seri waktu dari sistem file lokal ke Azure Blob storage setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan di bagian setelah sampel.

Sebagai langkah pertama, siapkan Data Management Gateway sesuai instruksi di Memindahkan data antara sumber lokal dan cloud dengan Data Management Gateway.

Layanan tertaut Server File Lokal:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Sebaiknya gunakan properti encryptedCredential sebagai gantinya properti userid dan kata sandi. Lihat Layanan tertaut Server File untuk detail tentang layanan tertaut ini.

Layanan tertaut Microsoft Azure Storage:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Himpunan data input sistem file lokal:

Data diambil dari file baru setiap jam. Properti folderPath dan fileName ditentukan berdasarkan waktu mulai irisan.

Pengaturan "external": "true" menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar data factory dan tidak diproduksi oleh aktivitas di data factory.

{
  "name": "OnpremisesFileSystemInput",
  "properties": {
    "type": " FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Himpunan data output Azure Blob storage:

Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder untuk blob dievaluasi secara dinamis berdasarkan waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Aktivitas salin dalam alur dengan sumber Sistem File dan Blob sink:

Alur berisi aktivitas salin yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis sumber diatur ke FileSystemSource dan jenis sink diatur ke BlobSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T19:00:00",
    "description":"Pipeline for copy activity",
    "activities":[
      {
        "name": "OnpremisesFileSystemtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "OnpremisesFileSystemInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "FileSystemSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Contoh: Menyalin data dari Azure SQL Database ke sistem file lokal

Contoh berikut menunjukkan:

Sampel menyalin data seri waktu dari tabel Azure SQL ke sistem file lokal setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan di bagian setelah sampel.

Layanan tertaut Azure SQL Database:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Layanan tertaut Server File Lokal:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Sebaiknya gunakan properti encryptedCredential sebagai gantinya properti userid dan kata sandi. Lihat Layanan tertaut Sistem File untuk detail tentang layanan tertaut ini.

Himpunan data input Azure SQL:

Sampel mengasumsikan Anda telah membuat tabel "MyTable" di Azure SQL dan berisi kolom yang disebut "timestampcolumn" untuk data rangkaian waktu.

Pengaturan "external": "true" menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar Data Factory dan tidak diproduksi oleh aktivitas di Data Factory.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Himpunan data output sistem file lokal:

Data disalin ke file baru setiap jam. folderPath dan fileName untuk blob ditentukan berdasarkan waktu mulai irisan.

{
  "name": "OnpremisesFileSystemOutput",
  "properties": {
    "type": "FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Aktivitas salin dalam alur dengan sumber SQL dan sink Sistem File:

Alur berisi aktivitas salin yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi JSON alur, jenis source diatur ke SqlSource, dan jenis sink diatur ke FileSystemSink. Kueri SQL yang ditentukan untuk properti SqlReaderQuery memilih data dalam satu jam terakhir untuk disalin.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T20:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoOnPremisesFile",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "OnpremisesFileSystemOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "FileSystemSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 3,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Anda juga dapat memetakan kolom dari himpunan data sumber ke kolom dari himpunan data sink dalam definisi aktivitas salin. Untuk detailnya, lihat Memetakan kolom himpunan data di Azure Data Factory.

Kinerja dan penyetelan

Untuk mempelajari tentang faktor-faktor utama yang memengaruhi kinerja pergerakan data (Aktivitas Salin) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya, lihat panduan penyetelan dan kinerja Aktivitas Salin.