Memindahkan data dari sumber OData menggunakan Azure Data Factory

Catatan

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

Artikel ini menjelaskan cara menggunakan Aktivitas Penyalinan di Azure Data Factory untuk memindahkan data ke dan dari sumber OData. Ini dibangun pada artikel Aktivitas Pergerakan Data, yang menyajikan ikhtisar umum pergerakan data dengan aktivitas penyalinan.

Anda dapat menyalin data dari sumber OData ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sink oleh aktivitas penyalinan, lihat tabel Penyimpanan data yang didukung. Pabrik data saat ini hanya mendukung pemindahan data dari sumber OData ke penyimpanan data lain, tetapi tidak memindahkan data dari penyimpanan data lain ke tujuan sumber OData.

Versi dan jenis autentikasi yang didukung

Konektor OData ini mendukung OData versi 3.0 dan 4.0, dan Anda dapat menyalin data dari sumber OData cloud dan OData lokal. Untuk yang terakhir, Anda perlu menginstal Gateway Manajemen Data. Lihat artikel Memindahkan data antara lokal dan awan untuk detail tentang Gateway Manajemen Data.

Semua jenis autentikasi di bawah ini didukung:

  • Untuk mengakses cloud umpan OData, Anda dapat menggunakan anonim, dasar (nama pengguna dan kata sandi), atau autentikasi OAuth berbasis Azure Active Directory.
  • Untuk mengakses umpan OData lokal, Anda bisa menggunakan anonim, dasar (nama pengguna dan kata sandi), atau autentikasi Windows.

Memulai

Anda dapat membuat alur dengan aktivitas penyalinan yang memindahkan data dari sumber OData 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 layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda.
  2. Buat kumpulan data untuk mewakili data input dan output untuk operasi salin.
  3. 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 sumber OData, lihat contoh JSON: Menyalin data dari sumber OData ke bagian Azure Blob di artikel ini.

Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Data Factory khusus untuk sumber OData:

Properti Layanan tertaut

Tabel berikut ini menyediakan deskripsi untuk elemen JSON khusus untuk layanan tertaut OData.

Properti Deskripsi Diperlukan
jenis Properti jenis harus diatur ke: OData Ya
url Url layanan OData. Ya
authenticationType Jenis autentikasi yang digunakan untuk menyambungkan ke sumber OData.

Untuk OData awan, nilai yang mungkin adalah Anonim, Dasar, dan OAuth (catatan Azure Data Factory saat ini hanya mendukung Azure Active Directory based OAuth).

Untuk OData di tempat, nilai yang mungkin adalah Anonim, Dasar, dan Windows.
Ya
username Tentukan nama pengguna jika Anda menggunakan autentikasi Dasar. Ya (hanya jika Anda menggunakan autentikasi Dasar)
kata sandi Tentukan kata sandi untuk akun pengguna yang Anda tentukan untuk nama pengguna. Ya (hanya jika Anda menggunakan autentikasi Dasar)
authorizedCredential Jika Anda menggunakan OAuth, klik tombol Otorisasi di Panduan atau Editor Salinan Azure Data Factory dan masukkan kredensial Anda, maka nilai properti ini akan dibuat secara otomatis. Ya (hanya jika Anda menggunakan autentikasi OAuth)
gatewayName Nama gateway yang harus digunakan layanan Azure Data Factory untuk menyambungkan ke layanan OData lokal. Tentukan hanya jika Anda menyalin data dari sumber OData di tempat. Tidak

Menggunakan autentikasi Dasar

{
    "name": "inputLinkedService",
    "properties":
    {
        "type": "OData",
        "typeProperties":
        {
            "url": "https://services.odata.org/OData/OData.svc",
            "authenticationType": "Basic",
            "username": "username",
            "password": "password"
        }
    }
}

Menggunakan autentikasi Anonim

{
    "name": "ODataLinkedService",
    "properties":
    {
        "type": "OData",
        "typeProperties":
        {
            "url": "https://services.odata.org/OData/OData.svc",
            "authenticationType": "Anonymous"
        }
    }
}

Menggunakan autentikasi Windows mengakses sumber OData lokal

{
    "name": "inputLinkedService",
    "properties":
    {
        "type": "OData",
        "typeProperties":
        {
            "url": "<endpoint of on-premises OData source e.g. Dynamics CRM>",
            "authenticationType": "Windows",
            "username": "domain\\user",
            "password": "password",
            "gatewayName": "mygateway"
        }
    }
}

Menggunakan autentikasi OAuth yang mengakses sumber OData cloud

{
    "name": "inputLinkedService",
    "properties":
    {
        "type": "OData",
            "typeProperties":
        {
            "url": "<endpoint of cloud OData source e.g. https://<tenant>.crm.dynamics.com/XRMServices/2011/OrganizationData.svc>",
            "authenticationType": "OAuth",
            "authorizedCredential": "<auto generated by clicking the Authorize button on UI>"
        }
    }
}

Properti kumpulan 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 kumpulan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk kumpulan data jenis ODataResource (yang menyertakan kumpulan data OData) memiliki properti berikut ini

Properti Deskripsi Diperlukan
jalur Jalur ke sumber daya OData Tidak

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, dan kebijakan tersedia untuk semua jenis aktivitas.

Sedangkan properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas. Untuk Aktivitas penyalinan, ia bervariasi tergantung pada jenis sumber dan sink.

Ketika sumber berdasarkan jenis RelationalSource (yang mencakup OData), properti berikut ini tersedia di bagian typeProperties:

Properti Deskripsi Contoh Diperlukan
kueri Gunakan kueri kustom untuk membaca data. "?$select=Name, Description&$top=5" Tidak

Ketik Pemetaan untuk OData

Seperti disebutkan dalam artikel aktivitas pergerakan data, Aktivitas Penyalinan melakukan konversi jenis otomatis dari jenis sumber ke jenis sink dengan pendekatan 2 langkah berikut.

  1. Konversi dari jenis sumber asli menjadi jenis .NET
  2. Konversi dari jenis .NET ke jenis jalur asli

Saat memindahkan data dari OData, pemetaan berikut digunakan dari jenis OData ke jenis .NET.

Jenis Data OData Jenis .NET
Edm.Binary Byte[]
Edm.Boolean Bool
Edm.Byte Byte[]
Edm.DateTime DateTime
Edm.Decimal Desimal
Edm.Double Double
Edm.Single Tunggal
Edm.Guid Guid
Edm.Int16 Int16
Edm.Int32 Int32
Edm.Int64 Int64
Edm.SByte Int16
Edm.String String
Edm.Time TimeSpan
Edm.DateTimeOffset DateTimeOffset

Catatan

Jenis data kompleks OData misalnya Objek tidak didukung.

Contoh JSON: Menyalin data dari sumber OData ke Azure Blob

Contoh berikut ini menyediakan contoh definisi JSON yang bisa Anda gunakan untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Mereka memperlihatkan cara menyalin data dari sumber OData ke Blob Azure Storage. Akan tetapi, data dapat disalin ke salah satu sink yang dinyatakan di sini menggunakan Aktivitas Penyalinan di Azure Data Factory. Sampel memiliki entitas Data Factory berikut:

  1. Layanan tertaut jenis OData.
  2. Layanan tertaut jenis AzureStorage.
  3. Kumpulan data input jenis ODataResource.
  4. Kumpulan data output jenis AzureBlob.
  5. Alur dengan Aktivitas Penyalinan yang menggunakan RelationalSource dan BlobSink.

Sampel menyalin data dari kueri terhadap sumber OData ke Azure blob setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.

Layanan tertaut OData: Contoh ini menggunakan autentikasi Anonim. Lihat bagian Layanan tertaut OData untuk berbagai jenis autentikasi yang bisa Anda gunakan.

{
    "name": "ODataLinkedService",
    "properties":
    {
        "type": "OData",
        "typeProperties":
        {
            "url": "https://services.odata.org/OData/OData.svc",
            "authenticationType": "Anonymous"
        }
    }
}

Layanan tertaut penyimpanan Azure:

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

Kumpulan data input OData:

Pengaturan "eksternal": "true" menginformasikan layanan Data Factory bahwa kumpulan data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.

{
    "name": "ODataDataset",
    "properties":
    {
        "type": "ODataResource",
        "typeProperties":
        {
            "path": "Products"
        },
        "linkedServiceName": "ODataLinkedService",
        "structure": [],
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "retryInterval": "00:01:00",
            "retryTimeout": "00:10:00",
            "maximumRetry": 3
        }
    }
}

Menentukan jalur dalam definisi kumpulan data bersifat opsional.

Kumpulan 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": "AzureBlobODataDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/odata/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
        }
    }
}

Aktivitas penyalinan dalam alur dengan SQL source dan Blob sink:

Alur berisi Aktivitas Penyalinan yang dikonfigurasi untuk menggunakan kumpulan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis sumber diatur ke SqlSource dan jenis sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti kueri memilih data terbaru (terbaru) dari sumber OData.

{
    "name": "CopyODataToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "?$select=Name, Description&$top=5",
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [
                    {
                        "name": "ODataDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobODataDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "ODataToBlob"
            }
        ],
        "start": "2017-02-01T18:00:00Z",
        "end": "2017-02-03T19:00:00Z"
    }
}

Menentukan kueri dalam definisi alur bersifat opsional. URL yang digunakan layanan Data Factory untuk mengambil data adalah: URL yang ditentukan dalam layanan tertaut (diperlukan) + jalur yang ditentukan dalam kumpulan data (opsional) + kueri dalam alur (opsional).

Ketik pemetaan untuk OData

Seperti disebutkan dalam artikel aktivitas pergerakan data, Aktivitas Penyalinan melakukan konversi jenis otomatis dari jenis sumber ke jenis sink dengan pendekatan 2 langkah berikut:

  1. Konversi dari jenis sumber asli menjadi jenis .NET
  2. Konversi dari jenis .NET ke jenis jalur asli

Saat memindahkan data dari penyimpanan data OData, jenis data OData dipetakan ke jenis .NET.

Memetakan sumber untuk sink kolom

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.

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.