Memindahkan data dari penyimpanan data ODBC menggunakan Azure Data Factory
Catatan
Artikel ini berlaku untuk versi 1 dari Azure Data Factory. Jika Anda menggunakan versi layanan Data Factory saat ini, lihat konektor ODBC di V2.
Artikel ini menjelaskan cara menggunakan Aktivitas Salin di Azure Data Factory untuk memindahkan data dari database ODBC lokal. Ini dibuat pada artikel Aktivitas Pergerakan Data, yang menyajikan ikhtisar umum pergerakan data dengan aktivitas salin.
Anda dapat menyalin data dari penyimpanan data ODBC ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sink oleh aktivitas salin, lihat tabel Penyimpanan data yang didukung. Pabrik data saat ini hanya mendukung pemindahan data dari sumber ODBC ke penyimpanan data lain, tetapi tidak memindahkan data dari penyimpanan data lain ke tujuan sumber ODBC.
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.
Mengaktifkan konektivitas
Layanan Data Factory mendukung koneksi ke sumber ODBC lokal menggunakan Data Management Gateway. Lihat artikel memindahkan data antara lokasi lokal dan cloud untuk mempelajari tentang Data Management Gateway dan untuk instruksi langkah demi langkah tentang cara menyiapkan gateway. Gunakan gateway untuk menyambungkan ke penyimpanan data ODBC meskipun dihosting di Azure IaaS VM.
Anda dapat menginstal gateway pada mesin lokal yang sama atau Azure VM sebagai penyimpanan data ODBC. Namun, Anda sebaiknya menginstal gateway pada komputer terpisah/IaaS VM untuk menghindari perebutan sumber daya, dan untuk performa yang lebih baik. Ketika menginstal gateway pada komputer terpisah, komputer harus dapat mengakses penyimpanan data ODBC.
Selain Data Management Gateway, Anda juga perlu menginstal driver ODBC untuk penyimpanan data di mesin gateway.
Catatan
Lihat Memecahkan masalah gateway untuk tips tentang pemecahan masalah terkait koneksi/gateway.
Memulai
Anda dapat membuat alur dengan aktivitas salin yang memindahkan data dari sumber ODBC 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:
- Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda.
- Buat kumpulan data untuk mewakili data input dan output untuk operasi salin.
- Buat jalur dengan aktivitas salinan yang mengambil set data sebagai input dan set data sebagai output.
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 dengan menggunakan format JSON. Untuk sampel dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data dari penyimpanan data ODBC, lihat bagian contoh JSON: Menyalin data dari server ODBC ke Azure Blob di artikel ini.
Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Data Factory khusus untuk penyimpanan data ODBC:
Properti layanan tertaut
Tabel berikut memberikan deskripsi untuk elemen JSON khusus untuk layanan tertaut ODBC.
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| jenis | Properti tipe harus diatur ke: OnPremisesOdbc | Ya |
| connectionString | Bagian kredensial non-akses dari string koneksi dan kredensial terenkripsi opsional. Lihat contoh di bagian berikut. Anda dapat menentukan string koneksi dengan pola seperti "Driver={SQL Server};Server=Server.database.windows.net; Database=TestDatabase;", atau menggunakan sistem DSN (Nama Sumber Data) yang Anda siapkan di mesin gateway dengan "DSN=<name of the DSN>;" (Anda masih perlu menentukan bagian kredensial dalam layanan tertaut yang sesuai). |
Ya |
| kredensial | Bagian kredensial akses dari string koneksi yang ditentukan dalam format nilai properti khusus driver. Contoh: "Uid=<user ID>;Pwd=<password>;RefreshToken=<secret refresh token>;". |
Tidak |
| authenticationType | Jenis autentikasi yang digunakan untuk menyambungkan ke penyimpanan data ODBC. Nilai yang mungkin adalah: Anonim dan Dasar. | Ya |
| userName | Tentukan nama pengguna jika Anda menggunakan autentikasi Dasar. | Tidak |
| password | Tentukan kata sandi untuk akun pengguna yang Anda tentukan untuk userName. | Tidak |
| gatewayName | Nama gateway yang harus digunakan oleh layanan Azure Data Factory untuk menyambungkan ke penyimpanan data ODBC. | Ya |
Menggunakan autentikasi Dasar
{
"name": "odbc",
"properties":
{
"type": "OnPremisesOdbc",
"typeProperties":
{
"authenticationType": "Basic",
"connectionString": "Driver={SQL Server};Server=Server.database.windows.net; Database=TestDatabase;",
"userName": "username",
"password": "password",
"gatewayName": "mygateway"
}
}
}
Menggunakan autentikasi Dasar dengan kredensial terenkripsi
Anda dapat mengenkripsi kredensial menggunakan cmdlet New-AzDataFactoryEncryptValue (1.0 versi Azure PowerShell) atau New-AzureDataFactoryEncryptValue (0,9 atau versi Azure PowerShell yang lebih lama).
{
"name": "odbc",
"properties":
{
"type": "OnPremisesOdbc",
"typeProperties":
{
"authenticationType": "Basic",
"connectionString": "Driver={SQL Server};Server=myserver.database.windows.net; Database=TestDatabase;;EncryptedCredential=eyJDb25uZWN0...........................",
"gatewayName": "mygateway"
}
}
}
Menggunakan autentikasi Anonim
{
"name": "odbc",
"properties":
{
"type": "OnPremisesOdbc",
"typeProperties":
{
"authenticationType": "Anonymous",
"connectionString": "Driver={SQL Server};Server={servername}.database.windows.net; Database=TestDatabase;",
"credential": "UID={uid};PWD={pwd}",
"gatewayName": "mygateway"
}
}
}
Properti himpunan data
Untuk daftar lengkap bagian properti & yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian-bagian seperti struktur, ketersediaan, dan kebijakan himpunan data JSON mirip untuk semua jenis himpunan data (Azure SQL, blob Azure, tabel Azure, dll.).
Bagian typeProperties berbeda untuk setiap jenis himpunan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk himpunan data tipe RelationalTable (yang menyertakan himpunan data ODBC) memiliki properti berikut ini
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| tableName | Nama tabel di penyimpanan data ODBC. | Ya |
Properti aktivitas penyalinan
Untuk daftar lengkap bagian & properti yang tersedia untuk menentukan aktivitas, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, serta kebijakan tersedia untuk semua jenis aktivitas.
Properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas. Untuk aktivitas salin, ia bervariasi sesuai dengan jenis sumber dan sink.
Ketika sumber dalam aktivitas salin berdasarkan jenis RelationalSource (yang mencakup ODBC), properti berikut ini tersedia di bagian typeProperties:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| kueri | Gunakan kueri kustom untuk membaca data. | String kueri SQL. Misalnya: pilih * dari MyTable. | Ya |
Contoh JSON: Menyalin data dari sumber ODBC ke Azure Blob
Contoh berikut ini menyediakan contoh definisi JSON yang bisa Anda gunakan untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Ini menunjukkan cara menyalin data dari sumber ODBC ke Azure Blob Storage. Akan tetapi, data dapat disalin ke salah satu sink yang dinyatakan di sini menggunakan Aktivitas Salin di Azure Data Factory.
Sampel memiliki entitas Data Factory berikut:
- Layanan tertaut tipe OnPremisesOdbc.
- Layanan tertaut jenis AzureStorage.
- Sebuah input himpunan data jenis RelationalTable.
- Sebuah output himpunan data jenis AzureBlob.
- Alur dengan Aktivitas Salin yang menggunakan RelationalSource dan BlobSink.
Sampel menyalin data dari kueri menghasilkan penyimpanan data ODBC ke blob setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.
Sebagai langkah pertama, siapkan data management gateway. Instruksinya berada di artikel memindahkan data antara lokasi lokal dan cloud.
Layanan tertaut ODBC Contoh ini menggunakan autentikasi Dasar. Lihat bagian layanan tertaut ODBC untuk jenis autentikasi berbeda yang dapat Anda gunakan.
{
"name": "OnPremOdbcLinkedService",
"properties":
{
"type": "OnPremisesOdbc",
"typeProperties":
{
"authenticationType": "Basic",
"connectionString": "Driver={SQL Server};Server=Server.database.windows.net; Database=TestDatabase;",
"userName": "username",
"password": "password",
"gatewayName": "mygateway"
}
}
}
Layanan tertaut Microsoft Azure Storage
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
himpunan data masukan ODBC
Contoh tersebut mengasumsikan Anda telah membuat tabel "MyTable" dalam database ODBC dan berisi kolom yang disebut "timestampcolumn" untuk data deret waktu.
Pengaturan "eksternal": "true" menginformasikan layanan Data Factory bahwa himpunan data berada di luar data factory dan tidak diproduksi oleh aktivitas di data factory.
{
"name": "ODBCDataSet",
"properties": {
"published": false,
"type": "RelationalTable",
"linkedServiceName": "OnPremOdbcLinkedService",
"typeProperties": {},
"availability": {
"frequency": "Hour",
"interval": 1
},
"external": true,
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
himpunan data output Azure Blob
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": "AzureBlobOdbcDataSet",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "AzureStorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/odbc/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "\t"
},
"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"
}
}
]
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Salin aktivitas dalam alur dengan sumber ODBC (RelationalSource) dan Blob sink (BlobSink)
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 RelationalSource dan jenis sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti kueri memilih data dalam satu jam terakhir untuk disalin.
{
"name": "CopyODBCToBlob",
"properties": {
"description": "pipeline for copy activity",
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "RelationalSource",
"query": "$$Text.Format('select * from MyTable where timestamp >= \\'{0:yyyy-MM-ddTHH:mm:ss}\\' AND timestamp < \\'{1:yyyy-MM-ddTHH:mm:ss}\\'', WindowStart, WindowEnd)"
},
"sink": {
"type": "BlobSink",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
}
},
"inputs": [
{
"name": "OdbcDataSet"
}
],
"outputs": [
{
"name": "AzureBlobOdbcDataSet"
}
],
"policy": {
"timeout": "01:00:00",
"concurrency": 1
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"name": "OdbcToBlob"
}
],
"start": "2016-06-01T18:00:00Z",
"end": "2016-06-01T19:00:00Z"
}
}
Jenis pemetaan untuk ODBC
Seperti disebutkan dalam artikel aktivitas pergerakan data, aktivitas Salin melakukan konversi jenis otomatis dari jenis sumber ke jenis sink dengan pendekatan dua langkah berikut:
- Konversi dari jenis sumber asli menjadi jenis .NET
- Konversi dari jenis .NET ke jenis sink asli
Saat memindahkan data dari penyimpanan data ODBC, tipe data ODBC dipetakan ke tipe .NET seperti yang disebutkan dalam topik Pemetaan Tipe Data ODBC.
Memetakan sumber untuk kolom sink
Untuk mempelajari tentang pemetaan kolom dari himpunan data sumber ke kolom dalam himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.
Bacaan berulang dari sumber relasional
Saat menyalin data dari penyimpanan data relasional, ingatlah pengulangan untuk menghindari hasil yang tidak diinginkan. Di Azure Data Factory, Anda dapat menjalankan ulang irisan secara manual. Anda juga dapat mengonfigurasi kebijakan coba lagi untuk himpunan data sehingga irisan diulang saat kegagalan terjadi. Saat irisan diulang dengan cara apa pun, Anda perlu memastikan bahwa data yang sama dibaca tidak peduli berapa kali irisan dijalankan. Lihat Bacaan yang dapat diulang dari sumber relasional.
Memecahkan masalah konektivitas
Untuk memecahkan masalah koneksi, gunakan tab Diagnostik manajer Data Management Gateway Configuration Manager.
Luncurkan Data Management Gateway Configuration Manager. Anda dapat menjalankan "C:\Program Files\Microsoft Data Management Gateway\1.0\Shared\ConfigManager.exe" secara langsung (atau) mencari Gateway untuk menemukan link ke aplikasi Microsoft Data Management Gateway seperti yang diperlihatkan dalam gambar berikut.
Beralih ke tab Diagnostik.
Pilih jenis penyimpanan data (layanan tertaut).
Tentukan autentikasi dan masukkan kredensial (atau) masukkan string koneksi yang digunakan untuk menyambungkan ke penyimpanan data.
Klik Uji koneksi untuk menguji koneksi ke penyimpanan data.
Kinerja dan Penyetelan
Lihat Performa Aktivitas Penyalinan & Panduan Pengaturan untuk mempelajari tentang faktor utama yang memengaruhi performa perpindahan data (Aktivitas Penyalinan) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya.