Todos os produtos
Search
Central de documentação

DataWorks:Salesforce data source

Última atualização: Sep 25, 2026

O Salesforce oferece software sob demanda para gerenciamento de relacionamento com clientes (CRM), incluindo gerenciamento de contatos, catálogos de produtos, gerenciamento de pedidos, gerenciamento de oportunidades e gerenciamento de vendas. A integração de dados do DataWorks suporta leitura de fontes de dados do Salesforce. Este tópico descreve como usar o Salesforce como uma fonte de dados.

Tipos de campo suportados

Tipo de campo

Tipo DataWorks

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

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária ao DataWorks seguindo as instruções em Data source configuration. É possível visualizar as descrições dos parâmetros no console do DataWorks para entender o significado de cada parâmetro ao adicionar uma fonte de dados.

Crie uma fonte de dados do Salesforce de uma das seguintes formas:

  • Salesforce official: Faça login no site do Salesforce para obter automaticamente a URL de acesso e criar uma fonte de dados.

  • Customize: Para definir credenciais de conexão dedicadas para o DataWorks, configure a fonte de dados Salesforce no modo Customize. Faça login no Salesforce e crie um Connected App para obter as credenciais de segurança (Consumer Key e Consumer Secret), concedendo autorização de conexão ao DataWorks. O procedimento de configuração é o seguinte:

    Custom configuration

    Criar um Connected App

    1. Acesse a página de criação do aplicativo.

      1. Acesse a URL do seu sistema Salesforce e faça login.

      2. No canto superior direito, clique em image e, em seguida, clique em App Manager no painel de navegação à esquerda.

      3. Na página Lightning Experience App Manager, clique em New Connected App.

    2. Configure o Connected App.

      Parâmetros principais:

      Step

      Description

      1

      Insira um Connected App Name, um API Name e um Contact Email que atendam aos padrões do Salesforce.

      2

      Selecione Enable OAuth Settings. Em Callback URL, insira https://bff-cn-shanghai.data.aliyun.com/di/oauth/callback/index.html.

      3

      Em Selected OAuth Scopes, adicione os seguintes escopos:

      • 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

      • Desmarque a caixa de seleção Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows.

      • Marque a caixa de seleção Require Secret for Web Server Flow.

      • Marque a caixa de seleção Require Secret for Refresh Token Flow.

    3. Visualize o Consumer Key and Secret do Connected App.

      1. Na lista do App Manager, localize seu aplicativo. Clique no ícone de seta image ao lado do nome do aplicativo e selecione View.

      2. Na página de detalhes do aplicativo, localize a seção Consumer Key and Secret.

        Clique em Manage Consumer Details para recuperar os valores.

      3. Copie os valores de Consumer Key e Consumer Secret para uso posterior.

    Configurar os parâmetros da fonte de dados

    1. Faça login no console do DataWorks. Na região de destino, clique em Data Integration > Data Integration no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Integration.

    2. No painel de navegação à esquerda, clique em Data Source para acessar a página de gerenciamento de fontes de dados.

    3. Clique em Add Data Source, localize e selecione Salesforce. Na página Add Salesforce Data Source, defina Data Source Type como Customize.

      Parâmetros principais:

      Parâmetro

      Descrição

      Login URL

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

      Authentication URL

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

      Consumer Key e Consumer Secret

      Insira o Consumer Key e o Consumer Secret obtidos nos detalhes do Connected App.

      Clique em Log in to Salesforce. Na página de autorização, insira seu nome de usuário e senha e, em seguida, clique em Allow.

Importante

O Salesforce é um service de terceiros. Certifique-se de que o VPC do seu grupo de recursos possa se conectar à plataforma Salesforce. Caso contrário, não será possível criar a fonte de dados.

Tarefas de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias de configuração a seguir.

Tarefa de sincronização offline de tabela única

Apêndice: Demonstrações de scripts e parâmetros

Configure uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script conforme os requisitos do formato de script unificado. Para mais informações, consulte Script mode configuration. A seguir, são descritos os parâmetros que devem ser configurados para as fontes de dados ao configurar uma tarefa de sincronização em lote pelo editor de código.

Demonstrações de scripts do Reader

Exemplo 1: Consultar um objeto do 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"
      }
    ]
  }
}

Exemplo 2: Consulta usando 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"
      }
    ]
  }
}

Exemplo 3: Consulta usando 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"
      }
    ]
  }
}

Exemplo 4: Consulta usando uma instrução 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"
      }
    ]
  }
}

Parâmetros do script do Reader

Parâmetro

Obrigatório

Descrição

Padrão

datasource

Sim

O nome da fonte de dados. No modo de script, é possível adicionar uma fonte de dados. O valor deste parâmetro deve corresponder ao nome da fonte de dados adicionada.

Nenhum

serviceType

Não

O modo de sincronização. Valores válidos:

  • sobject: Consulta um objeto do Salesforce.

  • query: Consulta dados usando uma instrução SOQL.

  • bulk1: Consulta um objeto do Salesforce usando Bulk API 1.0.

  • bulk2: Consulta um objeto do Salesforce usando Bulk API 2.0.

    Importante
    • Os modos bulk1 e bulk2 não suportam tipos de dados compostos, como address e geolocation.

    • O modo bulk2 não suporta tarefas distribuídas.

    • O desempenho pode variar entre os modos bulk1 e bulk2. Teste ambos os modos no seu objeto do Salesforce para selecionar o mais adequado.

sobject

table

Sim

O objeto do Salesforce, equivalente a um nome de tabela, como Account, Case ou Group. Obrigatório quando serviceType for sobject, bulk1 ou bulk2.

Nenhum

beginDateTime

Não

  • Os horários de início e término para extração de dados. Este parâmetro é aplicável quando serviceType está definido como sobject, bulk1 ou bulk2.

  • Filtra dados com base no horário da última modificação do objeto do Salesforce. O campo de horário da última modificação é identificado automaticamente na seguinte ordem de prioridade: SystemModstamp > LastModifiedDate > CreatedDate.

  • O intervalo de tempo é fechado à esquerda e aberto à direita.

  • Uma string de tempo no formato yyyymmddhhmmss. Use este parâmetro junto com parâmetros de agendamento para realizar extração incremental.

Nenhum

endDateTime

Não

Nenhum

splitPk

Não

  • A chave de fragmentação. Este parâmetro é aplicável quando serviceType está definido como sobject.

  • Especifique um campo para usar como chave de fragmentação na partição de dados. Isso ativa tarefas concorrentes e melhora a eficiência da sincronização de dados.

  • Somente os tipos de dados datetime, int e long são suportados. O uso de outros tipos faz com que a tarefa falhe.

Nenhum

blockCompoundColumn

Não

Define o comportamento quando um tipo de dado composto é encontrado. Este parâmetro é aplicável quando serviceType está definido como bulk1 ou bulk2. Valores válidos:

  • true: A tarefa falha. Remova o mapeamento de coluna do tipo de dado composto e execute a tarefa novamente.

  • false: O tipo de dado composto é lido como NULL.

true

bulkQueryJobTimeoutSeconds

Não

  • O período de timeout para a preparação de dados em lote, em segundos. Este parâmetro é aplicável quando serviceType está definido como bulk1 ou bulk2.

  • O servidor do Salesforce prepara os dados em lote antes do início da leitura. A tarefa falha se essa preparação ultrapassar o timeout especificado.

86400

batchSize

Não

  • O tamanho do lote, ou seja, o número de registros a baixar por lote. Este parâmetro é aplicável quando serviceType está definido como bulk1 ou bulk2.

  • Para desempenho ideal, defina este valor um pouco acima do tamanho de lote determinado pela tarefa de preparação de dados do Salesforce.

  • Como os dados são transmitidos em streaming, aumentar este valor não eleva o uso de memória.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

300000

where

Não

  • A condição de filtro. Este parâmetro é aplicável quando serviceType está definido como sobject, bulk1 ou bulk2.

  • Em cenários de negócios reais, filtre os dados conforme necessário. Por exemplo, especifique Name != 'Aliyun'.

  • Se este parâmetro estiver vazio, o sistema sincroniza todos os dados.

  • O valor deve ser uma cláusula WHERE SOQL válida. Por exemplo, limit 10 não é válido, pois LIMIT é uma cláusula separada em SOQL.

Nenhum

query

Não

  • A instrução de consulta. Este parâmetro é aplicável quando serviceType está definido como query.

  • Quando o parâmetro where for insuficiente, use query para fornecer uma instrução SOQL completa. Se especificado, este parâmetro substitui os parâmetros table, column, beginDateTime, endDateTime, where e splitPk. Exemplo: select Id, Name, IsDeleted from Account where Name!='Aliyun'.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

Nenhum

queryAll

Não

  • Indica se os registros excluídos devem ser incluídos na consulta. Este parâmetro é aplicável quando serviceType está definido como sobject ou query.

  • Quando definido como true, os resultados incluem registros excluídos, identificáveis pelo campo IsDeleted.

false

column

Sim

As colunas a sincronizar. Especifique-as como um array JSON.

  • Suporta remoção de colunas, permitindo selecionar um subconjunto de colunas para exportar.

  • Suporta reordenação de colunas, permitindo exportá-las em uma ordem diferente do esquema da tabela.

  • Configure constantes conforme o exemplo:

    [
      {
        "name": "Id",
        "type": "STRING"
      },
      {
        "name": "Name",
        "type": "STRING"
      },
      {
        "name": "'123'",
        "type": "LONG"
      },
      {
        "name": "'abc'",
        "type": "STRING"
      }
    ]
    Nota
    • Id e Name são nomes de colunas regulares.

    • '123' é uma constante inteira. Observe que deve ser colocada entre aspas simples.

    • 'abc' é uma constante de string. Observe que deve ser colocada entre aspas simples.

  • Especifique explicitamente todas as colunas a sincronizar como um array não vazio.

Nenhum

connectTimeoutSeconds

Não

  • O timeout para estabelecer uma conexão HTTP, em segundos. A tarefa falha se a conexão não for estabelecida dentro desse prazo.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

30

socketTimeoutSeconds

Não

  • O timeout de resposta HTTP, em segundos. A tarefa falha se o intervalo entre pacotes de dados consecutivos recebidos ultrapassar este valor.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

600

retryIntervalSeconds

Não

  • O intervalo entre tentativas de repetição, em segundos.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

60

retryTimes

Não

  • O número de tentativas de repetição.

  • Este é um parâmetro avançado e não tem suporte no modo assistente.

3

Perguntas Frequentes

P: Ocorre um erro de redirecionamento HTTP 302 ao configurar o login de uma fonte de dados do Salesforce. Como solucionar esse problema?

R: Verifique se o nome de domínio nos campos Login URL e Authentication URL foi definido incorretamente como sfcrmapps.cn. As instâncias do Salesforce na Alibaba Cloud devem usar *.sfcrmproducts.cn, e não *.sfcrmapps.cn. Os dois nomes de domínio são muito parecidos e podem ser facilmente confundidos.

Exemplos:

URL

Incorreto

https://<instance>.sfcrmapps.cn

Correto

https://<instance>.sfcrmproducts.cn

Substitua o domínio nos campos Login URL e Authentication URL por sfcrmproducts.cn para restaurar o login normal.