Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de Salesforce

Última actualización: Sep 25, 2026

Salesforce ofrece software bajo demanda para la gestión de relaciones con clientes (CRM). Este servicio incluye la gestión de contactos, catálogos de productos, pedidos, oportunidades y ventas. La integración de datos de DataWorks admite la lectura desde orígenes de datos de Salesforce. En este tema se describe cómo usar Salesforce como origen de datos.

Tipos de campo compatibles

Tipo de campo

Tipo de 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

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, debe agregar el origen de datos necesario a DataWorks siguiendo las instrucciones de Data source configuration. Consulte las descripciones de los parámetros en la consola de DataWorks para comprender su significado al agregar un origen de datos.

Cree un origen de datos de Salesforce mediante uno de los siguientes métodos:

  • Salesforce official: inicie sesión en el sitio web de Salesforce para obtener automáticamente la URL de acceso y crear un origen de datos.

  • Customize: si desea establecer credenciales de conexión dedicadas para DataWorks, configure el origen de datos de Salesforce en el modo Customize. Inicie sesión en Salesforce y cree una Connected App para obtener las credenciales de seguridad (Consumer Key y Consumer Secret), lo cual otorga autorización de conexión a DataWorks. El procedimiento de configuración es el siguiente:

    Configuración personalizada

    Crear una Connected App

    1. Acceda a la página de creación de aplicaciones.

      1. Vaya a la URL de su sistema Salesforce e inicie sesión.

      2. En la esquina superior derecha, haga clic en image y luego haga clic en App Manager en el panel de navegación izquierdo.

      3. En la página Lightning Experience App Manager, haga clic en New Connected App.

    2. Configure la Connected App.

      Parámetros clave:

      Paso

      Descripción

      1

      Introduzca un Connected App Name, un API Name y un Contact Email que cumplan con los estándares de Salesforce.

      2

      Seleccione Enable OAuth Settings. En Callback URL, introduzca https://bff-cn-shanghai.data.aliyun.com/di/oauth/callback/index.html.

      3

      En Selected OAuth Scopes, agregue los siguientes alcances:

      • 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

      • Desactive la casilla Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows.

      • Active la casilla Require Secret for Web Server Flow.

      • Active la casilla Require Secret for Refresh Token Flow.

    3. Consulte la Consumer Key and Secret de la Connected App.

      1. En la lista de App Manager, busque su aplicación. Haga clic en el ícono de flecha image junto al nombre de la aplicación y seleccione View.

      2. En la página de detalles de la aplicación, busque la sección Consumer Key and Secret.

        Haga clic en Manage Consumer Details para recuperar los valores.

      3. Copie los valores de Consumer Key y Consumer Secret para usarlos más adelante.

    Configurar los parámetros del origen de datos

    1. Inicie sesión en la consola de DataWorks. En la región de destino, haga clic en Data Integration > Data Integration en el panel de navegación izquierdo. Seleccione un espacio de trabajo en la lista desplegable y haga clic en Go to Data Integration.

    2. En el panel de navegación izquierdo, haga clic en Data Source para ir a la página de gestión de orígenes de datos.

    3. Haga clic en Add Data Source y luego busque y seleccione Salesforce. En la página Add Salesforce Data Source, establezca Data Source Type en Customize.

      Parámetros clave:

      Parámetro

      Descripción

      Login URL

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

      Authentication URL

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

      Consumer Key y Consumer Secret

      Introduzca la Consumer Key y el Consumer Secret de los detalles de la Connected App.

      Haga clic en Log in to Salesforce. En la página de autorización, introduzca su nombre de usuario y contraseña, y luego haga clic en Allow.

Importante

Salesforce es un servicio de terceros. Asegúrese de que la VPC de su resource group pueda conectarse a la plataforma de Salesforce. De lo contrario, no podrá crear el origen de datos.

Tareas de sincronización de datos

Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las siguientes guías de configuración.

Tarea de sincronización sin conexión de tabla única

Apéndice: demostraciones de scripts y parámetros

Configurar una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, debe configurar los parámetros correspondientes en el script según los requisitos unificados de formato de script. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando configura una tarea de sincronización por lotes mediante el editor de código.

Demostraciones de scripts de Reader

Ejemplo 1: consultar un objeto de 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"
      }
    ]
  }
}

Ejemplo 2: consulta mediante 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"
      }
    ]
  }
}

Ejemplo 3: consulta mediante 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"
      }
    ]
  }
}

Ejemplo 4: consulta mediante una instrucción 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 del script de Reader

Parámetro

Obligatorio

Descripción

Predeterminado

datasource

Sí

Nombre del origen de datos. En el modo de script, puede agregar un origen de datos. El valor de este parámetro debe coincidir con el nombre del origen de datos agregado.

Ninguna

serviceType

No

Modo de sincronización. Valores válidos:

  • sobject: consulta un objeto de Salesforce.

  • query: consulta datos mediante una instrucción SOQL.

  • bulk1: consulta un objeto de Salesforce mediante Bulk API 1.0.

  • bulk2: consulta un objeto de Salesforce mediante Bulk API 2.0.

    Importante
    • Los modos bulk1 y bulk2 no admiten tipos de datos compuestos, como address y geolocation.

    • El modo bulk2 no admite tareas distribuidas.

    • El rendimiento puede variar entre bulk1 y bulk2. Pruebe ambos modos en su objeto de Salesforce para seleccionar el óptimo.

sobject

table

Sí

Objeto de Salesforce, similar a un nombre de tabla, como Account, Case o Group. Es obligatorio si serviceType es sobject, bulk1 o bulk2.

Ninguna

beginDateTime

No

  • Horas de inicio y fin para la extracción de datos. Este parámetro se usa cuando serviceType se establece en sobject, bulk1 o bulk2.

  • Filtra los datos según la última hora de modificación del objeto de Salesforce. El campo de última hora de modificación se identifica automáticamente con el siguiente orden de prioridad: SystemModstamp > LastModifiedDate > CreatedDate.

  • El intervalo de tiempo es cerrado por la izquierda y abierto por la derecha.

  • Cadena de tiempo con el formato yyyymmddhhmmss. Puede usar este parámetro con parámetros de programación para ejecutar una extracción incremental.

Ninguna

endDateTime

No

Ninguna

splitPk

No

  • Clave de fragmentación. Este parámetro se usa cuando serviceType se establece en sobject.

  • Especifica un campo para usarlo como clave de fragmentación durante la división de datos. Esto permite ejecutar tareas simultáneas y mejora la eficiencia de la sincronización de datos.

  • Solo se admiten los tipos de datos datetime, int y long. Si utiliza otros tipos, el trabajo fallará.

Ninguna

blockCompoundColumn

No

Especifica el comportamiento cuando se encuentra un tipo de dato compuesto. Este parámetro se usa cuando serviceType se establece en bulk1 o bulk2. Valores válidos:

  • true: el trabajo falla. Debe eliminar la asignación de columnas del tipo de dato compuesto y volver a ejecutar el trabajo.

  • false: el tipo de dato compuesto se lee como NULL.

true

bulkQueryJobTimeoutSeconds

No

  • Tiempo de espera para la preparación de datos por lotes, en segundos. Este parámetro se usa cuando serviceType se establece en bulk1 o bulk2.

  • El servidor de Salesforce prepara los datos por lotes antes de que comience la lectura. El trabajo falla si esta preparación supera el tiempo de espera especificado.

86400

batchSize

No

  • Tamaño del lote, es decir, la cantidad de registros que se descargan por lote. Este parámetro se usa cuando serviceType se establece en bulk1 o bulk2.

  • Para obtener un rendimiento óptimo, establezca este valor ligeramente por encima del tamaño de lote determinado por la tarea de preparación de datos de Salesforce.

  • Como los datos se transmiten en flujo, aumentar este valor no incrementa el uso de memoria.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

300000

where

No

  • Condición de filtro. Este parámetro se usa cuando serviceType se establece en sobject, bulk1 o bulk2.

  • En escenarios empresariales reales, puede filtrar datos. Por ejemplo, puede especificar Name != 'Aliyun'.

  • Si este parámetro está vacío, el sistema sincroniza todos los datos.

  • El valor debe ser una cláusula WHERE de SOQL válida. Por ejemplo, limit 10 no es válido porque LIMIT es una cláusula independiente en SOQL.

Ninguna

query

No

  • Instrucción de consulta. Este parámetro se usa cuando serviceType se establece en query.

  • Cuando el parámetro where resulta insuficiente, use query para proporcionar una instrucción de consulta SOQL completa. Si se especifica, este parámetro anula los parámetros table, column, beginDateTime, endDateTime, where y splitPk. Ejemplo: select Id, Name, IsDeleted from Account where Name!='Aliyun'.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

Ninguna

queryAll

No

  • Indica si se incluyen los registros eliminados en la consulta. Este parámetro se usa cuando serviceType se establece en sobject o query.

  • Si se establece en true, los resultados incluyen los registros eliminados, los cuales se identifican mediante el campo IsDeleted.

false

column

Sí

Columnas que desea sincronizar. Especifique las columnas como una matriz JSON.

  • Admite la reducción de columnas, lo que le permite seleccionar un subconjunto de columnas para exportar.

  • Admite la reordenación de columnas, lo que le permite exportarlas en un orden distinto al esquema de la tabla.

  • Puede configurar constantes. Ejemplo:

    [
      {
        "name": "Id",
        "type": "STRING"
      },
      {
        "name": "Name",
        "type": "STRING"
      },
      {
        "name": "'123'",
        "type": "LONG"
      },
      {
        "name": "'abc'",
        "type": "STRING"
      }
    ]
    Nota
    • Id y Name son nombres de columna normales.

    • '123' es una constante entera. Tenga en cuenta que debe encerrarse entre comillas simples.

    • 'abc' es una constante de cadena. Tenga en cuenta que debe encerrarse entre comillas simples.

  • Debe especificar explícitamente todas las columnas que desea sincronizar como una matriz no vacía.

Ninguna

connectTimeoutSeconds

No

  • Tiempo de espera para establecer una conexión HTTP, en segundos. El trabajo falla si la conexión no se establece dentro de este tiempo.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

30

socketTimeoutSeconds

No

  • Tiempo de espera de respuesta HTTP, en segundos. El trabajo falla si el tiempo transcurrido entre la recepción de paquetes de datos consecutivos supera este valor.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

600

retryIntervalSeconds

No

  • Intervalo entre reintentos, en segundos.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

60

retryTimes

No

  • Número de intentos de reintento.

  • Este es un parámetro avanzado y no se admite en el modo de asistente.

3

Preguntas frecuentes

P: Se produce un error de redireccionamiento HTTP 302 cuando configuro el inicio de sesión de un origen de datos de Salesforce. ¿Cómo soluciono este problema?

R: Compruebe si el nombre de dominio en los campos Login URL y Authentication URL está configurado incorrectamente como sfcrmapps.cn. Las instancias de Salesforce de Alibaba Cloud deben usar *.sfcrmproducts.cn, no *.sfcrmapps.cn. Ambos nombres de dominio son muy similares y se confunden fácilmente.

Ejemplos:

URL

Incorrecta

https://<instance>.sfcrmapps.cn

Correcta

https://<instance>.sfcrmproducts.cn

Reemplace el dominio en los campos Login URL y Authentication URL por sfcrmproducts.cn para restablecer el inicio de sesión normal.