Menyalin data dari dan ke Salesforce Service Cloud menggunakan Azure Data Factory atau Synapse Analytics (warisan)

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 alur Azure Data Factory dan Azure Synapse Analytics untuk menyalin data dari dan ke Salesforce Service Cloud. Artikel tersebut dibuat berdasarkan artikel Gambaran umum Salin Aktivitas yang menyajikan gambaran umum aktivitas salin.

Penting

Layanan ini telah merilis konektor Salesforce Service Cloud baru yang menyediakan dukungan Salesforce Service Cloud asli yang lebih baik, lihat artikel konektor Salesforce Service Cloud tentang detailnya.

Kemampuan yang didukung

Konektor Salesforce Service Cloud ini didukung untuk kemampuan berikut ini:

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 Service Cloud ini mendukung:

  • Pengembang Salesforce, Profesional, Enterprise, atau edisi Unlimited.
  • Menyalin data dari dan ke produksi Salesforce, kotak pasir, dan domain kustom.

Konektor Salesforce dibangun di atas Salesforce REST/Bulk API. Secara default, saat menyalin data dari Salesforce, konektor menggunakan v45 dan secara otomatis memilih antara REST dan API Massal berdasarkan ukuran data - ketika kumpulan hasil besar, API Massal digunakan untuk performa yang lebih baik; saat menulis data ke Salesforce, konektor menggunakan v40 API Massal. Anda juga dapat secara eksplisit menyetel versi API yang digunakan untuk membaca/menulis data melalui apiVersion properti di layanan tertaut.

Prasyarat

Izin API harus diaktifkan di Salesforce.

Batas permintaan Salesforce

Salesforce memiliki batasan untuk permintaan API total dan permintaan API bersamaan. Perhatikan poin berikut:

  • Jika jumlah permintaan bersama melebihi batas, pembatasan terjadi dan Anda melihat kegagalan acak.
  • Jika jumlah total permintaan melebihi batas, akun Salesforce diblokir selama 24 jam.

Anda mungkin juga menerima pesan kesalahan "REQUEST_LIMIT_EXCEEDED" di kedua skenario. Untuk informasi selengkapnya, lihat bagian “API request limits” di Salesforce developer limits.

Memulai

Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Membuat layanan tertaut ke Salesforce Service Cloud menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Salesforce Service Cloud di UI portal Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari Salesforce dan pilih konektor Salesforce Service Cloud.

    Select the Salesforce Service Cloud connector.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Configure a linked service to Salesforce Service Cloud.

Detail konfigurasi konektor

Bagian berikut ini menyediakan detail tentang properti yang digunakan untuk menentukan entitas Azure Data Factory khusus untuk konektor Salesforce Service Cloud.

Properti layanan tertaut

Properti berikut ini didukung untuk layanan tertaut Salesforce.

Properti Deskripsi Wajib
jenis Properti jenis harus diatur ke SalesforceServiceCloud. Ya
environmentUrl Tentukan URL instans Salesforce Service Cloud.
- Defaultnya adalah "https://login.salesforce.com".
- Untuk menyalin data dari kotak pasir, tentukan "https://test.salesforce.com".
- Untuk menyalin data dari domain kustom, tentukan, misalnya, "https://[domain].my.salesforce.com".
No
Nama pengguna Tentukan nama pengguna untuk akun pengguna. Ya
kata sandi Tentukan kata sandi untuk akun pengguna.

Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman, atau mereferensikan rahasia yang disimpan di Azure Key Vault.
Ya
keamananToken Tentukan token keamanan untuk akun pengguna.

Untuk mempelajari tentang token keamanan secara umum, lihat Keamanan dan API. Token hanya dapat dilewati jika Anda menambahkan IP Integration Runtime ke daftar alamat IP tepercaya di Salesforce. Saat menggunakan Azure runtime integrasi, lihat Alamat IP Azure Integration Runtime.

Untuk petunjuk tentang cara mendapatkan dan mengatur ulang token, lihat Mendapatkan token. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman di Data Factory, atau referensikan rahasia yang disimpan di Azure Key Vault.
No
apiVersion Tentukan versi Salesforce REST/Bulk API yang akan digunakan, misalnya 48.0. Secara default, konektor menggunakan v45 untuk menyalin data dari Salesforce, dan menggunakan v40 untuk menyalin data ke Salesforce. No
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": "SalesforceServiceCloudLinkedService",
    "properties": {
        "type": "SalesforceServiceCloud",
        "typeProperties": {
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "securityToken": {
                "type": "SecureString",
                "value": "<security token>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Menyimpan info masuk di Key Vault

{
    "name": "SalesforceServiceCloudLinkedService",
    "properties": {
        "type": "SalesforceServiceCloud",
        "typeProperties": {
            "username": "<username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of password in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "securityToken": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of security token in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            }
        },
        "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 Service Cloud.

Untuk menyalin data dari dan ke Salesforce Service Cloud, properti berikut ini didukung.

Properti Deskripsi Wajib
jenis Properti jenis harus diatur ke SalesforceServiceCloudObject. Ya
objectApiName Nama objek Salesforce untuk diambil datanya. Tidak untuk sumber, Ya untuk sink

Penting

Bagian "__c" dari Nama API diperlukan untuk objek kustom apa pun.

Salesforce connection API Name

Contoh:

{
    "name": "SalesforceServiceCloudDataset",
    "properties": {
        "type": "SalesforceServiceCloudObject",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce Service Cloud linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}
Properti Deskripsi Wajib
jenis Properti jenis himpunan data harus disetel ke RelationalTable. Ya
tableName Nama tabel di Salesforce Service Cloud. Tidak (jika "kueri" dalam sumber aktivitas ditentukan)

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 Service Cloud.

Salesforce Service Cloud sebagai jenis sumber

Untuk menyalin data dari Salesforce Service Cloud, properti berikut ini didukung di bagian aktivitas salin sumber.

Properti Deskripsi Wajib
jenis Properti jenis sumber aktivitas salin harus diatur ke SalesforceServiceCloudSource. Ya
pertanyaan Gunakan kueri kustom untuk membaca data. Anda bisa menggunakan kueri Salesforce Object Query Language (SOQL) atau kueri SQL-92. Lihat tips lainnya di bagian tips kueri. Jika kueri tidak ditentukan, semua data objek Salesforce Service Cloud yang ditentukan dalam "objectApiName" dalam himpunan data akan diambil. Tidak (jika "objectApiName" dalam himpunan data ditentukan)
readBehavior Menunjukkan apakah akan mengkueri rekaman yang sudah ada, atau mengkueri semua rekaman termasuk yang dihapus. Jika tidak ditentukan, perilaku default adalah yang pertama.
Nilai yang diperbolehkan: kueri (default), semuaKueri.
No

Penting

Bagian "__c" dari Nama API diperlukan untuk objek kustom apa pun.

Salesforce connection API Name list

Contoh:

"activities":[
    {
        "name": "CopyFromSalesforceServiceCloud",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce Service Cloud input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceServiceCloudSource",
                "query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Catatan

Sumber Salesforce Service Cloud tidak mendukung pengaturan proksi di runtime integrasi yang dihost sendiri, tetapi sink mendukungnya.

Salesforce Service Cloud sebagai jenis sink

Untuk menyalin data dari Salesforce Service Cloud, properti berikut ini didukung di bagian aktivitas salin sink.

Properti Deskripsi Wajib
jenis Properti jenis sink aktivitas salin harus disetel ke SalesforceServiceCloudSink. 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 Service Cloud. Ini tidak dapat memiliki nilai NULL dalam data input yang sesuai. Ya untuk "Upsert"
writeBatchSize Jumlah baris data yang ditulis ke Salesforce Service Cloud di setiap batch. Tidak (defaultnya adalah 5.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)
 maxConcurrent Koneksi ions Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan.  Tanpa

Contoh:

"activities":[
    {
        "name": "CopyToSalesforceServiceCloud",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Salesforce Service Cloud output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SalesforceServiceCloudSink",
                "writeBehavior": "Upsert",
                "externalIdFieldName": "CustomerId__c",
                "writeBatchSize": 10000,
                "ignoreNullValues": true
            }
        }
    }
]

Tips kueri

Mengambil data dari laporan Salesforce Service Cloud

Anda dapat mengambil data dari laporan Salesforce Service Cloud dengan menentukan kueri sebagai {call "<report name>"}. Contohnya "query": "{call \"TestReport\"}".

Mengambil rekaman yang dihapus dari Keranjang Sampah Salesforce Service Cloud

Untuk mengkueri rekaman yang dihapus sementara dari Keranjang Sampah Salesforce Service Cloud, Anda bisa menentukan readBehavior sebagai queryAll.

Perbedaan antara SOQL dan SQL sintaks kueri

Saat menyalin data dari Salesforce Service Cloud, Anda dapat menggunakan kueri SOQL atau kueri SQL. Perhatikan bahwa keduanya memiliki dukungan sintaks dan fungsionalitas yang berbeda, jangan mencampurnya. Anda disarankan untuk menggunakan kueri SOQL, yang secara asli didukung oleh Salesforce Service Cloud. Tabel berikut ini mencantumkan perbedaan utama:

Sintaks Mode SOQL Mode SQL
Pilihan kolom Perlu menghitung bidang yang akan disalin dalam kueri, misalnya SELECT field1, filed2 FROM objectname SELECT * didukung selain pilihan kolom.
Tanda kutip Nama berkas/objek tak bisa dikutip. Nama bidang/objek dapat dikutip, misalnya SELECT "id" FROM "Account"
Format tanggalwaktu Lihat detail di sini dan sampel di bagian berikutnya. Lihat detail di sini dan sampel di bagian berikutnya.
Nilai Boolean Diwakili sebagai False dan True, misalnya SELECT … WHERE IsDeleted=True. Diwakili sebagai 0 atau 1, misalnya SELECT … WHERE IsDeleted=1.
Penggantian nama kolom Tidak didukung. Didukung, misalnya: SELECT a AS b FROM ….
Hubungan Didukung, misalnya Account_vod__r.nvs_Country__c. Tidak didukung.

Mengambil data dengan menggunakan klausul di kolom TanggalWaktu

Saat Anda menentukan kueri SOQL atau SQL, perhatikan perbedaan format TanggalWaktu. Contohnya:

  • Sampel SOQL: SELECT Id, Name, BillingCity FROM Account WHERE LastModifiedDate >= @{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-ddTHH:mm:ssZ')} AND LastModifiedDate < @{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-ddTHH:mm:ssZ')}
  • Sampel SQL: SELECT * FROM Account WHERE LastModifiedDate >= {ts'@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}'} AND LastModifiedDate < {ts'@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'}

Kesalahan MALFORMED_QUERY: Truncated

Jika Anda menekan kesalahan "MALFORMED_QUERY: Truncated", biasanya karena Anda memiliki kolom jenis JunctionIdList dalam data dan Salesforce memiliki batasan untuk mendukung data tersebut dengan jumlah baris yang besar. Untuk mengurangi, coba kecualikan kolom JunctionIdList atau batasi jumlah baris yang akan disalin (Anda dapat mempartisi ke beberapa aktivitas salin yang dijalankan).

Pemetaan jenis data untuk Salesforce Service Cloud

Saat Anda menyalin data dari Salesforce Service Cloud, pemetaan berikut digunakan dari jenis data Salesforce Service Cloud ke jenis data sementara yang digunakan secara internal dalam layanan. Untuk mempelajari bagaimana aktivitas salin memetakan skema sumber dan jenis data ke sink, lihat Pemetaan skema dan jenis data.

Jenis data Salesforce Service Cloud Jenis data sementara layanan
Nomor Otomatis String
Kotak centang Boolean
Mata Uang Decimal
Tanggal DateTime
Tanggal/Waktu DateTime
Email String
ID String
Hubungan Pencarian String
Multi-Select Picklist String
Angka 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 Cloud Layanan Salesforce memetakan ke Jenis desimal di 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 akan dibulatkan dalam data pratinjau dan salinan. Untuk menghindari kehilangan presisi tersebut di alur Azure Data Factory dan Azure Synapse, pertimbangkan untuk meningkatkan tempat desimal ke nilai yang cukup besar di halaman Edit Definisi Bidang Kustom salesforce Service Cloud.

Properti aktivitas pencarian

Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.

Langkah berikutnya

Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat Penyimpanan data yang didukung.