All Products
Search
Document Center

DataWorks:Sumber data Salesforce

Last Updated:Jun 22, 2026

Salesforce menyediakan perangkat lunak berbasis permintaan untuk manajemen hubungan pelanggan (CRM), mencakup manajemen kontak, katalog produk, manajemen pesanan, manajemen peluang, dan manajemen penjualan. Integrasi DataWorks mendukung pembacaan dari sumber data Salesforce. Topik ini menjelaskan cara menggunakan Salesforce sebagai sumber data.

Tipe bidang yang didukung

Field type

DataWorks type

address

STRING

anyType

STRING

base64

BYTES

boolean

BOOL

combobox

STRING

complexvalue

STRING

currency

DOUBLE

date

DATE

datetime

DATE

double

DOUBLE

email

STRING

encryptedstring

STRING

id

STRING

int

LONG

json

STRING

long

LONG

multipicklist

STRING

percent

DOUBLE

phone

STRING

picklist

STRING

reference

STRING

string

STRING

textarea

STRING

time

DATE

url

STRING

geolocation

STRING

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Manajemen sumber data. Anda dapat melihat deskripsi parameter di konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Anda dapat membuat sumber data Salesforce dengan salah satu cara berikut:

  • Salesforce official: Login ke website Salesforce untuk secara otomatis mendapatkan URL akses dan membuat sumber data.

  • Customize: Jika ingin menetapkan kredensial koneksi khusus untuk DataWorks, Anda dapat mengonfigurasi sumber data Salesforce dalam mode Customize. Anda perlu login ke Salesforce dan membuat Connected App untuk mendapatkan kredensial keamanan (Consumer Key dan Consumer Secret), yang memberikan otorisasi koneksi kepada DataWorks. Prosedur konfigurasinya adalah sebagai berikut:

    Konfigurasi kustom

    Buat Connected App

    1. Buka halaman pembuatan aplikasi.

      1. Buka URL sistem Salesforce Anda dan login.

      2. Di pojok kanan atas, klik image, lalu klik App Manager di panel navigasi sebelah kiri.

      3. Di halaman Lightning Experience App Manager, klik New Connected App.

    2. Konfigurasi Connected App.

      Parameter utama:

      Langkah

      Deskripsi

      1

      Masukkan Connected App Name, API Name, dan Contact Email yang sesuai dengan standar Salesforce.

      2

      Pilih Enable OAuth Settings. Untuk Callback URL, masukkan https://bff-cn-shanghai.data.aliyun.com/di/oauth/callback/index.html.

      3

      Di Selected OAuth Scopes, tambahkan cakupan berikut:

      • Access Connect REST API resources (chatter api)

      • Access the identity URL service (id, profile, email, address, phone)

      • Access unique user identifiers (openid)

      • Manage user data via APIs (api)

      • Perform requests at any time (refresh token, offline_access)

      4

      • Hilangkan centang pada kotak Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows.

      • Pilih kotak centang Require Secret for Web Server Flow.

      • Pilih kotak centang Require Secret for Refresh Token Flow.

    3. Lihat Consumer Key and Secret dari Connected App.

      1. Di daftar App Manager, temukan aplikasi Anda. Klik ikon panah image di samping nama aplikasi dan pilih View.

      2. Di halaman detail aplikasi, temukan bagian Consumer Key and Secret.

        Klik Manage Consumer Details untuk mengambil nilainya.

      3. Salin nilai Consumer Key dan Consumer Secret untuk digunakan nanti.

    Konfigurasi parameter sumber data

    1. Login ke Konsol DataWorks. Di wilayah target, klik Data Integration > Data Integration di panel navigasi sebelah kiri. Pilih ruang kerja dari daftar drop-down dan klik Go to Data Integration.

    2. Di panel navigasi sebelah kiri, klik Data Source untuk membuka halaman manajemen sumber data.

    3. Klik Add Data Source, lalu temukan dan pilih Salesforce. Di halaman Add Salesforce Data Source, atur Data Source Type menjadi Customize.

      Parameter utama:

      Parameter

      Deskripsi

      Login URL

      Masukkan https://<YourSalesforceDomain>/services/oauth2/authorize.

      Authentication URL

      Masukkan https://<YourSalesforceDomain>/services/oauth2/token.

      Consumer Key dan Consumer Secret

      Masukkan Consumer Key dan Consumer Secret dari detail Connected App.

      Klik Log in to Salesforce. Di halaman otorisasi, masukkan username dan password Anda, lalu klik Allow.

Penting

Salesforce adalah layanan pihak ketiga. Pastikan VPC untuk kelompok sumber daya Anda dapat terhubung ke platform Salesforce. Jika tidak, Anda tidak dapat membuat sumber data tersebut.

Tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Tugas sinkronisasi offline tabel tunggal

Lampiran: Demo skrip dan parameter

Konfigurasi tugas sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi mode skrip. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

Contoh 1: Kueri objek Salesforce

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "sobject",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Contoh 2: Kueri menggunakan Bulk API 1.0

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "bulk1",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "blockCompoundColumn":true,
        "bulkQueryJobTimeoutSeconds":86400,
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{
        "print": true
      },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "concurrent":1
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Contoh 3: Kueri menggunakan Bulk API 2.0

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "bulk2",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "blockCompoundColumn":true,
        "bulkQueryJobTimeoutSeconds":86400,
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Contoh 4: Kueri menggunakan pernyataan SOQL

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "query",
        "query": "select Id, Name, IsDeleted, CreatedDate from Account where Name!='Aliyun' ",
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Parameter skrip Reader

Parameter

Wajib

Deskripsi

Default

datasource

Ya

Nama sumber data. Dalam mode skrip, Anda dapat menambahkan sumber data. Nilai parameter ini harus sesuai dengan nama sumber data yang telah ditambahkan.

Tidak ada

serviceType

Tidak

Mode sinkronisasi. Nilai yang valid:

  • sobject: Mengkueri objek Salesforce.

  • query: Mengkueri data menggunakan pernyataan SOQL.

  • bulk1: Mengkueri objek Salesforce menggunakan Bulk API 1.0.

  • bulk2: Mengkueri objek Salesforce menggunakan Bulk API 2.0.

    Penting
    • Mode bulk1 dan bulk2 tidak mendukung tipe data majemuk, seperti address dan geolocation.

    • Mode bulk2 tidak mendukung tugas terdistribusi.

    • Kinerja dapat berbeda antara mode bulk1 dan bulk2. Uji kedua mode tersebut pada objek Salesforce Anda untuk memilih yang optimal.

sobject

table

Ya

Objek Salesforce, yang mirip dengan nama tabel, seperti Account, Case, atau Group. Wajib jika serviceType bernilai sobject, bulk1, atau bulk2.

Tidak ada

beginDateTime

Tidak

  • Waktu mulai dan akhir ekstraksi data. Parameter ini digunakan ketika serviceType diatur ke sobject, bulk1, atau bulk2.

  • Menyaring data berdasarkan waktu modifikasi terakhir objek Salesforce. Bidang waktu modifikasi terakhir diidentifikasi secara otomatis dalam urutan prioritas berikut: SystemModstamp > LastModifiedDate > CreatedDate.

  • Rentang waktu merupakan interval tertutup-kiri dan terbuka-kanan.

  • String waktu dalam format yyyymmddhhmmss. Anda dapat menggunakan parameter ini bersama parameter penjadwalan untuk melakukan ekstraksi inkremental.

Tidak ada

endDateTime

Tidak

Tidak ada

splitPk

Tidak

  • Kunci sharding. Parameter ini digunakan ketika serviceType diatur ke sobject.

  • Menentukan bidang yang akan digunakan sebagai kunci sharding untuk pemecahan data. Ini memungkinkan tugas konkuren dan meningkatkan efisiensi sinkronisasi data.

  • Hanya mendukung tipe data datetime, int, dan long. Penggunaan tipe lain menyebabkan tugas gagal.

Tidak ada

blockCompoundColumn

Tidak

Menentukan perilaku saat menemui tipe data majemuk. Parameter ini digunakan ketika serviceType diatur ke bulk1 atau bulk2. Nilai yang valid:

  • true: Tugas gagal. Anda harus menghapus pemetaan kolom untuk tipe data majemuk tersebut dan menjalankan tugas lagi.

  • false: Tipe data majemuk dibaca sebagai NULL.

true

bulkQueryJobTimeoutSeconds

Tidak

  • Periode timeout untuk persiapan data batch, dalam detik. Parameter ini digunakan ketika serviceType diatur ke bulk1 atau bulk2.

  • Server Salesforce menyiapkan data batch sebelum pembacaan dimulai. Tugas gagal jika persiapan ini melebihi timeout yang ditentukan.

86400

batchSize

Tidak

  • Ukuran batch, yaitu jumlah catatan yang diunduh per batch. Parameter ini digunakan ketika serviceType diatur ke bulk1 atau bulk2.

  • Untuk kinerja optimal, atur nilai ini sedikit lebih tinggi daripada ukuran batch yang ditentukan oleh tugas persiapan data Salesforce.

  • Karena data dialirkan, peningkatan nilai ini tidak meningkatkan penggunaan memori.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

300000

where

Tidak

  • Kondisi filter. Parameter ini digunakan ketika serviceType diatur ke sobject, bulk1, atau bulk2.

  • Dalam skenario bisnis aktual, Anda dapat menyaring data. Misalnya, Anda dapat menentukan Name != 'Aliyun'.

  • Jika parameter ini kosong, sistem melakukan sinkronisasi data penuh.

  • Nilainya harus merupakan klausa WHERE SOQL yang valid. Misalnya, limit 10 tidak valid karena LIMIT merupakan klausa terpisah dalam SOQL.

Tidak ada

query

Tidak

  • Pernyataan kueri. Parameter ini digunakan ketika serviceType diatur ke query.

  • Ketika parameter where tidak mencukupi, gunakan query untuk memberikan pernyataan kueri SOQL lengkap. Jika ditentukan, parameter ini menggantikan parameter table, column, beginDateTime, endDateTime, where, dan splitPk. Contoh: select Id, Name, IsDeleted from Account where Name!='Aliyun'.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

Tidak ada

queryAll

Tidak

  • Menentukan apakah catatan yang dihapus disertakan dalam kueri. Parameter ini digunakan ketika serviceType diatur ke sobject atau query.

  • Jika diatur ke true, hasilnya mencakup catatan yang dihapus, yang dapat diidentifikasi melalui bidang IsDeleted.

false

column

Ya

Kolom yang ingin Anda sinkronkan. Tentukan kolom sebagai array JSON.

  • Mendukung pemangkasan kolom, yang memungkinkan Anda memilih subset kolom untuk diekspor.

  • Mendukung pengubahan urutan kolom, yang memungkinkan Anda mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Anda dapat mengonfigurasi konstanta. Contoh:

    [
      {
        "name": "Id",
        "type": "STRING"
      },
      {
        "name": "Name",
        "type": "STRING"
      },
      {
        "name": "'123'",
        "type": "LONG"
      },
      {
        "name": "'abc'",
        "type": "STRING"
      }
    ]
    Catatan
    • Id dan Name adalah nama kolom biasa.

    • '123' adalah konstanta integer. Perhatikan bahwa harus diapit tanda kutip tunggal.

    • 'abc' adalah konstanta string. Perhatikan bahwa harus diapit tanda kutip tunggal.

  • Anda harus secara eksplisit menentukan semua kolom yang akan disinkronkan sebagai array yang tidak kosong.

Tidak ada

connectTimeoutSeconds

Tidak

  • Timeout untuk membangun koneksi HTTP, dalam detik. Tugas gagal jika koneksi tidak berhasil dibangun dalam waktu ini.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

30

socketTimeoutSeconds

Tidak

  • Timeout respons HTTP, dalam detik. Tugas gagal jika waktu antara penerimaan paket data berturut-turut melebihi nilai ini.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

600

retryIntervalSeconds

Tidak

  • Interval percobaan ulang, dalam detik.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

60

retryTimes

Tidak

  • Jumlah upaya percobaan ulang.

  • Ini adalah parameter lanjutan dan tidak didukung dalam mode wizard.

3