Menyalin data dari dan ke Salesforce V2 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 di Azure Data Factory dan alur Azure Synapse untuk menyalin data dari dan ke Salesforce. Artikel tersebut dibuat berdasarkan artikel Gambaran umum Salin Aktivitas yang menyajikan gambaran umum aktivitas salin.
Penting
Konektor Salesforce V2 menyediakan dukungan Salesforce asli yang ditingkatkan. Jika Anda menggunakan konektor Salesforce V1 dalam solusi Anda, Anda disarankan untuk meningkatkan konektor Salesforce Anda dengan mudah. Lihat bagian ini untuk detail tentang perbedaan antara V2 dan v1.
Kemampuan yang didukung
Konektor Salesforce ini didukung untuk kemampuan berikut:
Kemampuan yang didukung | IR |
---|---|
Salin aktivitas (sumber/sink) | (1) (2) |
Aktivitas pencarian | (1) (2) |
① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink, lihat tabel penyimpanan data yang didukung.
Secara khusus, konektor Salesforce ini mendukung:
- Pengembang Salesforce, Profesional, Enterprise, atau edisi Unlimited.
- Menyalin data dari dan ke domain kustom (Domain kustom dapat dikonfigurasi di lingkungan produksi dan kotak pasir).
Anda dapat secara eksplisit mengatur versi API yang digunakan untuk membaca/menulis data melalui apiVersion
properti di layanan tertaut. Saat Anda menyalin data ke Salesforce, konektor menggunakan BULK API 2.0.
Prasyarat
Izin API harus diaktifkan di Salesforce.
Anda perlu mengonfigurasi Connected Apps di portal Salesforce yang mengacu pada dokumen resmi ini atau panduan langkah demi langkah kami dalam rekomendasi dalam artikel ini.
Penting
- Pengguna eksekusi harus memiliki izin API Only.
- Waktu kedaluwarsa Token Akses dapat diubah melalui kebijakan sesi alih-alih token refresh.
Batas Salesforce Bulk API 2.0
Kami menggunakan Salesforce Bulk API 2.0 untuk mengkueri dan menyerap data. Di API Massal 2.0, batch dibuat untuk Anda secara otomatis. Anda dapat mengirimkan hingga 15.000 batch per periode 24 jam bergulir. Jika batch melebihi batas, Anda mengalami kegagalan.
Dalam API Massal 2.0, hanya pekerjaan penyerapan yang mengonsumsi batch. Pekerjaan kueri tidak. Untuk detailnya, lihat Cara Permintaan Diproses di Panduan Pengembang API 2.0 Massal.
Untuk informasi selengkapnya, lihat bagian "Batas Umum" di batas pengembang Salesforce.
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 ke Salesforce menggunakan antarmuka pengguna
Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Salesforce 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 Salesforce dan pilih konektor Salesforce.
Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.
Detail konfigurasi konektor
Bagian berikut memberikan detail tentang properti yang digunakan untuk menentukan entitas khusus untuk konektor Salesforce.
Properti layanan tertaut
Properti berikut ini didukung untuk layanan tertaut Salesforce.
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis harus diatur ke SalesforceV2. | Ya |
environmentUrl | Tentukan URL instans Salesforce. Misalnya, tentukan "https://<domainName>.my.salesforce.com" untuk menyalin data dari domain kustom. Pelajari cara mengonfigurasi atau menampilkan domain kustom Anda yang merujuk ke artikel ini. |
Ya |
authenticationType | Jenis autentikasi yang digunakan untuk menyambungkan ke Salesforce. Nilai yang diizinkan adalah OAuth2ClientCredentials. |
Ya |
clientId | Tentukan ID klien Salesforce OAuth 2.0 Connected App. Untuk informasi selengkapnya, buka artikel ini | Ya |
clientSecret | Tentukan rahasia klien Salesforce OAuth 2.0 Connected App. Untuk informasi selengkapnya, buka artikel ini | Ya |
apiVersion | Tentukan versi Salesforce Bulk API 2.0 yang akan digunakan, misalnya, 52.0 . API Massal 2.0 hanya mendukung versi >API = 47.0. Untuk mempelajari tentang versi 2.0 API Massal, lihat artikel. Kegagalan terjadi jika Anda menggunakan versi API yang lebih rendah. |
Ya |
connectVia | Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. | No |
Contoh: Info masuk Microsoft Store
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": "<environment URL>",
"authenticationType": "OAuth2ClientCredentials",
"clientId": "<client ID>",
"clientSecret": {
"type": "SecureString",
"value": "<client secret>"
},
"apiVersion": "<API Version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Menyimpan info masuk di Key Vault
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": "<environment URL>",
"authenticationType": "OAuth2ClientCredentials",
"clientId": "<client ID>",
"clientSecret": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client secret in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"apiVersion": "<API Version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Contoh: Menyimpan kredensial di Key Vault, serta environmentUrl dan clientId
Dengan melakukan penyimpanan kredensial di Key Vault, serta environmentUrl dan clientId, Anda dapat lebih lama menggunakan UI untuk mengedit pengaturan. Kotak centang Tentukan konten dinamis dalam format JSON harus dicentang, dan Anda harus mengkonfigurasikan ini secara manual. Keuntungan dari skenario ini adalah Anda dapat memperoleh semua pengaturan konfigurasi dari Key Vault alih-alih membuat parameter apa pun di sini.
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of environment URL in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"authenticationType": "OAuth2ClientCredentials",
"clientId": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client ID in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"clientSecret": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client secret in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"apiVersion": "<API Version>"
},
"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. Bagian ini menyediakan daftar properti yang didukung oleh himpunan data Salesforce.
Untuk menyalin data dari dan ke Salesforce, atur properti jenis himpunan data ke SalesforceV2Object. Properti berikut ini didukung.
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis harus diatur ke SalesforceV2Object. | Ya |
objectApiName | Nama objek Salesforce untuk diambil datanya. Versi runtime integrasi yang dihost sendiri yang berlaku adalah 5.44.8984.1 atau lebih tinggi. | Tidak untuk sumber (jika "kueri" di sumber ditentukan), Ya untuk sink |
reportId | ID laporan Salesforce untuk mengambil data. Ini tidak didukung di sink. Ada batasan saat Anda menggunakan laporan. Versi runtime integrasi yang dihost sendiri yang berlaku adalah 5.44.8984.1 atau lebih tinggi. | Tidak untuk sumber (jika "kueri" di sumber ditentukan), tidak mendukung sink |
Penting
Bagian "__c" dari Nama API diperlukan untuk objek kustom apa pun.
Contoh:
{
"name": "SalesforceDataset",
"properties": {
"type": "SalesforceV2Object",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce linked service name>",
"type": "LinkedServiceReference"
}
}
}
Properti aktivitas salin
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikel Alur. Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink Salesforce.
Salesforce sebagai jenis sumber
Untuk menyalin data dari Salesforce, atur jenis sumber dalam aktivitas salin ke SalesforceV2Source. Properti berikut ini didukung di bagian sumber aktivitas salin.
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis sumber aktivitas salin harus diatur ke SalesforceV2Source. | Ya |
pertanyaan | Gunakan kueri kustom untuk membaca data. Anda hanya bisa menggunakan kueri Salesforce Object Query Language (SOQL) dengan batasan. Untuk batasan SOQL, lihat artikel ini. Jika kueri tidak ditentukan, semua data objek Salesforce yang ditentukan dalam "objectApiName/reportId" dalam himpunan data diambil. | Tidak (jika "objectApiName/reportId" dalam himpunan data ditentukan) |
includeDeletedObjects | Menunjukkan apakah akan mengkueri rekaman yang sudah ada, atau mengkueri semua rekaman termasuk yang dihapus. Jika tidak ditentukan, perilaku defaultnya adalah false. Nilai yang diizinkan: false (default), true. |
No |
Penting
Bagian "__c" dari Nama API diperlukan untuk objek kustom apa pun.
Contoh:
"activities":[
{
"name": "CopyFromSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<Salesforce input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SalesforceV2Source",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
"includeDeletedObjects": false
},
"sink": {
"type": "<sink type>"
}
}
}
]
Salesforce sebagai jenis sink
Untuk menyalin data ke Salesforce, atur jenis sink dalam aktivitas salin ke SalesforceV2Sink. Properti berikut ini didukung di bagian sink aktivitas salin.
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis sink aktivitas salin harus diatur ke SalesforceV2Sink. | Ya |
writeBehavior | Perilaku penulisan untuk operasi. Nilai yang diperbolehkan Sisipkan dan Upsert. |
Tidak (defaultnya adalah sisipkan) |
NamaBidangEksternal | Nama bidang ID eksternal untuk operasi upsert. Bidang yang ditentukan harus didefinisikan sebagai "External ID Field" di objek Salesforce. Ini tidak dapat memiliki nilai NULL dalam data input yang sesuai. | Ya untuk "Upsert" |
writeBatchSize | Jumlah baris data yang ditulis ke Salesforce di setiap batch. Sarankan tetapkan nilai ini dari 10.000 hingga 200.000. Terlalu sedikit baris di setiap batch mengurangi performa penyalinan. Terlalu banyak baris di setiap batch dapat menyebabkan batas waktu API. | Tidak (defaultnya adalah 100.000) |
ignoreNullValues | Menunjukkan apakah akan mengabaikan nilai NULL dari data input selama operasi tulis. Nilai yang diperbolehkan adalah true dan false. - Benar: Biarkan data di objek tujuan tanpa perubahan saat Anda melakukan operasi upsert atau pembaruan. Sisipkan nilai default yang ditentukan saat Anda melakukan operasi sisipan. - Salah: Perbarui data di objek tujuan ke nilai NULL saat Anda melakukan operasi upsert atau pembaruan. Sisipkan nilai NULL saat Anda melakukan operasi sisipan. |
Tidak (default adalah salah) |
maxConcurrentConnections | Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan. | Tanpa |
Contoh: Sink Salesforce dalam aktivitas salin
"activities":[
{
"name": "CopyToSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Salesforce output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SalesforceV2Sink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
Pemetaan jenis data untuk Salesforce
Saat Anda menyalin data dari Salesforce, pemetaan berikut digunakan dari jenis data Salesforce ke jenis data sementara dalam layanan secara internal. Untuk mempelajari bagaimana aktivitas salin memetakan skema sumber dan jenis data ke sink, lihat Pemetaan skema dan jenis data.
Jenis data Salesforce | Jenis data sementara layanan |
---|---|
Nomor Otomatis | String |
Kotak centang | Boolean |
Mata Uang | Decimal |
Date | DateTime |
Tanggal/Waktu | DateTime |
String | |
ID | String |
Hubungan Pencarian | String |
Multi-Select Picklist | String |
Number | Decimal |
Persen | Decimal |
Nomor | String |
Daftar pilihan | String |
SMS | String |
Bidang Teks | String |
Area Teks (Panjang) | String |
Area Teks (Kaya) | String |
Teks (Terenkripsi) | String |
URL | String |
Catatan
Jenis Nomor Salesforce adalah pemetaan ke Jenis desimal dalam alur Azure Data Factory dan Azure Synapse sebagai jenis data sementara layanan. Jenis desimal menggunakan presisi dan skala yang ditentukan. Untuk data yang tempat desimalnya melebihi skala yang ditentukan, nilainya dibulatkan dalam data pratinjau dan salin. Untuk menghindari kehilangan presisi tersebut dalam alur Azure Data Factory dan Azure Synapse, pertimbangkan untuk meningkatkan tempat desimal ke nilai yang cukup besar di halaman Edit Definisi Bidang Kustom Salesforce.
Properti aktivitas pencarian
Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.
Meningkatkan konektor Salesforce
Berikut adalah langkah-langkah yang membantu Anda meningkatkan konektor Salesforce Anda:
Konfigurasikan aplikasi yang terhubung di portal Salesforce dengan merujuk ke Prasyarat.
Buat layanan tertaut Salesforce baru dan konfigurasikan dengan merujuk ke Properti layanan tertaut. Anda juga perlu memperbarui himpunan data yang ada secara manual yang mengandalkan layanan tertaut lama, mengedit setiap himpunan data untuk menggunakan layanan tertaut baru sebagai gantinya.
Jika Anda menggunakan kueri SQL di sumber aktivitas salin atau aktivitas pencarian yang merujuk ke layanan tertaut V1, Anda perlu mengonversinya ke kueri SOQL. Pelajari selengkapnya tentang kueri SOQL dari Salesforce sebagai jenis sumber dan Salesforce Object Query Language (SOQL).
readBehavior diganti dengan includeDeletedObjects di sumber aktivitas salin atau aktivitas pencarian. Untuk konfigurasi terperinci, lihat Salesforce sebagai jenis sumber.
Perbedaan antara Salesforce V2 dan V1
Konektor Salesforce V2 menawarkan fungsionalitas baru dan kompatibel dengan sebagian besar fitur konektor Salesforce V1. Tabel berikut ini memperlihatkan perbedaan fitur antara V2 dan V1.
Salesforce V2 | Salesforce V1 |
---|---|
Mendukung SOQL dalam Salesforce Bulk API 2.0. Untuk kueri SOQL: • Klausa GROUP BY, LIMIT, ORDER BY, OFFSET, atau TYPEOF tidak didukung. • Fungsi Agregat seperti COUNT() tidak didukung, Anda dapat menggunakan laporan Salesforce untuk mengimplementasikannya. • Fungsi tanggal dalam klausul GROUP BY tidak didukung, tetapi didukung dalam klausa WHERE. • Bidang alamat majemuk atau bidang geolokasi majemuk tidak didukung. Sebagai alternatif, kueri masing-masing komponen bidang senyawa. • Kueri hubungan induk ke anak tidak didukung, sedangkan kueri hubungan turunan ke induk didukung. |
Mendukung sintaks SQL dan SOQL. |
Objek yang berisi bidang biner tidak didukung saat menentukan kueri. | Objek yang berisi bidang biner didukung saat menentukan kueri. |
Mendukung objek dalam API Massal saat menentukan kueri. | Objek dukungan yang tidak didukung dengan API Massal saat menentukan kueri. |
Laporan dukungan dengan memilih ID laporan. | Mendukung sintaks kueri laporan, seperti {call "<report name>"} . |
Konten terkait
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat Penyimpanan data yang didukung.