All Products
Search
Document Center

DataWorks:Sumber data Salesforce

Last Updated:Nov 10, 2025

Salesforce menyediakan perangkat lunak manajemen hubungan pelanggan (CRM) yang berfokus pada manajemen kontak, katalog produk, pesanan, peluang, dan penjualan. DataWorks menyediakan Salesforce Reader untuk membaca data dari sumber data Salesforce. Topik ini menjelaskan kemampuan sinkronisasi data dari sumber data tersebut.

Pemetaan tipe data

Tipe data

Tipe data di editor kode

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 sesuai petunjuk dalam Manajemen sumber data. Anda dapat melihat infotips parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

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

  • Official: Masuk ke situs web resmi Salesforce untuk secara otomatis mendapatkan titik akhir Salesforce dan membuat sumber data.

  • Custom: Untuk mengatur kredensial koneksi khusus bagi DataWorks, gunakan mode Custom saat mengonfigurasi sumber data Salesforce. Anda harus masuk ke sistem Salesforce dan membuat Connected App untuk mendapatkan kredensial keamanan (Consumer Key dan Consumer Secret). Kredensial ini memberikan otorisasi koneksi kepada DataWorks. Langkah-langkah berikut menjelaskan proses konfigurasinya:

    Konfigurasi Sumber Data Pola Kustom

    Buat aplikasi terhubung

    1. Buka halaman pembuatan.

      1. Buka URL sistem Salesforce Anda dan masuk.

      2. Di bilah navigasi atas, klik ikon image. Di panel navigasi sebelah kiri, pilih Apps > App Manager.

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

        image

    2. Konfigurasi Connected App.

      image

      Tabel berikut menjelaskan parameter utama.

      Nomor urut

      Deskripsi

      1

      Masukkan nama aplikasi yang valid di bidang Connected App Name, nama API yang valid di bidang API Name, dan alamat email di bidang Contact Email sesuai kebutuhan.

      2

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

      3

      Pilih cakupan berikut untuk parameter Selected OAuth Scopes:

      • 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

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

      • Pilih Require Secret for Web Server Flow.

      • Pilih Require Secret for Refresh Token Flow.

    3. Lihat consumer key and consumer secret dari aplikasi terhubung.

      1. Temukan aplikasi yang telah dibuat di halaman App Manager, klik ikon image di sebelah kanan aplikasi, lalu klik View.

      2. Di bagian API (Enable OAuth Settings) pada halaman Manage Connected Apps, lihat consumer key and consumer secret.

        image

      3. Salin consumer key dan consumer secret.

        image

    Konfigurasi parameter yang diperlukan untuk menambahkan sumber data

    1. Buka halaman Integrasi Data.

      Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi sebelah kiri, pilih Data Integration > Data Integration. Di halaman yang muncul, pilih ruang kerja yang diinginkan dari daftar tarik-turun dan klik Go to Data Integration.

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

    3. Di halaman Data Sources, klik Add Data Source. Di kotak dialog Add Data Source, cari Salesforce dan klik Salesforce. Di kotak dialog Add Salesforce Data Source, pilih Custom untuk parameter Data Source Type.

      image

      Tabel berikut menjelaskan parameter utama.

      Parameter

      Deskripsi

      Login Page URL

      Masukkan https://<nama domain Salesforce>/services/oauth2/authorize.

      Authentication Address

      Masukkan https://<nama domain Salesforce>/services/oauth2/token.

      Consumer Key dan Consumer Secret

      Masukkan consumer key dan consumer secret yang Anda peroleh pada langkah sebelumnya.

      Klik Log On to Salesforce. Di halaman yang muncul, masukkan nama pengguna dan kata sandi, lalu klik Allow.

      image

Penting

Salesforce adalah layanan pihak ketiga. Pastikan jaringan VPC yang dilampirkan ke kelompok sumber daya dapat terhubung ke platform Salesforce. Jika tidak, sumber data tidak dapat dibuat.

Kembangkan tugas sinkronisasi data

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

Konfigurasikan tugas sinkronisasi batch untuk menyinkronkan data dari satu tabel

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai format skrip terpadu. Untuk informasi selengkapnya, lihat Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi 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: Gunakan Bulk API 1.0 untuk mengkueri objek Salesforce

{
  "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: Gunakan Bulk API 2.0 untuk mengkueri objek Salesforce

{
  "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: Gunakan pernyataan kueri 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

Nilai default

datasource

Ya

Nama sumber data. Harus sama dengan nama sumber data yang ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

Tidak ada

serviceType

Tidak

Mode sinkronisasi. Nilai yang valid:

  • sobject: mengkueri objek Salesforce.

  • query: mengkueri data dengan menjalankan pernyataan SOQL.

  • bulk1: mengkueri objek Salesforce menggunakan Salesforce Bulk API 1.0.

  • bulk2: mengkueri objek Salesforce menggunakan Salesforce Bulk API 2.0.

    Penting
    • Mode bulk1 dan bulk2 tidak mendukung tipe bidang komposit, seperti address dan geolocation.

    • Mode bulk2 tidak mendukung tugas terdistribusi.

    • Dalam beberapa kasus, bulk1 memiliki performa kueri yang lebih baik daripada bulk2. Anda dapat menguji performa kueri berdasarkan objek Salesforce Anda dan memilih mode sinkronisasi sesuai kebutuhan.

sobject

table

Ya

Objek Salesforce, seperti Account, Case, atau Group. Objek setara dengan tabel. Parameter ini wajib jika Anda mengatur parameter serviceType ke sobject, bulk1, atau bulk2.

Tidak ada

beginDateTime

Tidak

  • Waktu mulai dan akhir konsumsi data. Parameter ini wajib jika Anda mengatur parameter serviceType ke sobject, bulk1, atau bulk2.

  • Jika Anda menyaring data berdasarkan waktu modifikasi terakhir objek Salesforce, bidang waktu yang terkait dengan modifikasi objek dikueri berdasarkan urutan berikut: SystemModstamp > LastModifiedDate > CreatedDate.

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

  • Waktu dalam format yyyymmddhhmmss. Anda dapat menggunakan parameter ini bersama parameter penjadwalan di DataWorks untuk membaca data inkremental.

Tidak ada

endDateTime

Tidak

Tidak ada

splitPk

Tidak

  • Bidang yang digunakan untuk sharding data. Parameter ini wajib jika Anda mengatur parameter serviceType ke sobject.

  • Saat Salesforce Reader mengekstraksi data, jika Anda menentukan splitPk, bidang yang ditentukan akan digunakan untuk sharding data. Integrasi Data kemudian akan memulai tugas konkuren untuk menyinkronkan data, sehingga meningkatkan efisiensi sinkronisasi.

  • Anda dapat mengatur parameter ini ke bidang bertipe data datetime, int, atau long. Untuk bidang bertipe lain, akan muncul error.

Tidak ada

blockCompoundColumn

Tidak

Menentukan apakah mendukung kolom bertipe data gabungan. Parameter ini wajib jika Anda mengatur parameter serviceType ke bulk1 atau bulk2. Nilai yang valid:

  • true: Jika terdapat kolom bertipe data gabungan, tugas gagal dan perlu dijalankan ulang setelah Anda menghapus pemetaan kolom bertipe data gabungan tersebut.

  • false: Data dalam kolom bertipe data gabungan dibaca sebagai nilai NULL.

true

bulkQueryJobTimeoutSeconds

Tidak

  • Periode waktu habis untuk menyiapkan data batch. Satuan: detik. Parameter ini wajib jika Anda mengatur parameter serviceType ke bulk1 atau bulk2.

  • Sebelum Salesforce Reader mulai membaca data, server Salesforce menjalankan tugas untuk menyiapkan data batch. Jika durasi eksekusi tugas melebihi periode waktu habis yang ditentukan, tugas akan gagal karena waktu habis.

86400

batchSize

Tidak

  • Jumlah catatan data yang diunduh sekaligus. Parameter ini wajib jika Anda mengatur parameter serviceType ke bulk1 atau bulk2.

  • Untuk mencapai performa unduh optimal, Anda dapat mengatur parameter ini ke nilai yang sedikit lebih besar dari nilai sharding otomatis untuk tugas penyiapan data batch di Salesforce.

  • Data diunduh dalam mode streaming. Oleh karena itu, peningkatan nilai parameter ini tidak akan menggunakan lebih banyak memori.

  • Parameter ini merupakan parameter lanjutan, yang hanya tersedia di editor kode.

300000

where

Tidak

  • Klausa WHERE. Parameter ini wajib jika Anda mengatur parameter serviceType ke sobject, bulk1, atau bulk2.

  • Dalam skenario bisnis aktual, Anda dapat menentukan klausa WHERE untuk menyaring data, seperti Name != 'Aliyun'.

  • Menghilangkan klausa WHERE akan menghasilkan sinkronisasi data penuh.

  • Jangan mengatur parameter where menjadi limit 10, karena tidak sesuai dengan batasan Salesforce pada klausa WHERE SOQL.

Tidak ada

query

Tidak

  • Pernyataan kueri yang digunakan untuk penyaringan data yang lebih rinci. Parameter ini wajib jika Anda mengatur parameter serviceType ke query.

  • Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi penyaringan. Anda dapat menggunakan parameter ini untuk menyesuaikan pernyataan SQL penyaringan. Jika Anda mengonfigurasi parameter ini, sistem sinkronisasi data akan mengabaikan parameter table, column, beginDateTime, endDateTime, where, dan splitPk serta langsung menggunakan isi parameter ini untuk menyaring data. Contoh: select Id, Name, IsDeleted from Account where Name!='Aliyun'.

  • Parameter ini merupakan parameter lanjutan, yang hanya tersedia di editor kode.

Tidak ada

queryAll

Tidak

  • Pernyataan SQL yang digunakan untuk mengkueri semua data. Parameter ini wajib jika Anda mengatur parameter serviceType ke sobject atau query.

  • Jika Anda mengatur parameter ini ke true, semua data termasuk data yang dihapus akan dikueri. Bidang IsDeleted dapat digunakan untuk menentukan apakah suatu catatan data telah dihapus.

false

column

Ya

Nama kolom yang ingin Anda sinkronkan. Tentukan nama-nama tersebut dalam bentuk array JSON.

  • Anda dapat memilih subset kolom untuk diekspor.

  • Urutan kolom dapat diubah. Artinya, Anda dapat menentukan kolom dalam urutan yang berbeda dari urutan yang ditentukan oleh skema tabel sumber.

  • Konstanta didukung. Contoh:

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

    • '123': konstanta integer, yang diapit tanda kutip tunggal (').

    • 'abc': konstanta string, yang diapit tanda kutip tunggal (').

  • Parameter column harus secara eksplisit menentukan semua kolom dari mana Anda ingin membaca data. Parameter ini tidak boleh dibiarkan kosong.

Tidak ada

connectTimeoutSeconds

Tidak

  • Periode waktu habis untuk permintaan HTTP. Satuan: detik. Jika periode waktu habis yang ditentukan terlampaui, tugas akan gagal.

  • Parameter ini hanya dapat dikonfigurasi dalam mode Lanjutan, bukan di antarmuka tanpa kode.

30

socketTimeoutSeconds

Tidak

  • Periode waktu habis untuk tanggapan HTTP. Satuan: detik. Jika interval antara dua paket lebih besar dari periode waktu habis yang ditentukan, tugas akan gagal.

  • Parameter ini merupakan parameter lanjutan, yang hanya tersedia di editor kode.

600

retryIntervalSeconds

Tidak

  • Interval percobaan ulang. Satuan: detik.

  • Parameter ini hanya untuk mode Lanjutan dan tidak didukung di antarmuka tanpa kode.

60

retryTimes

Tidak

  • Jumlah percobaan ulang.

  • Parameter mode Lanjutan ini tidak dapat dikonfigurasi di antarmuka tanpa kode.

3