Compartir a través de


Copia de datos en Salesforce V2 con origen y destino mediante Azure Data Factory o Azure Synapse Analytics

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Tip

Pruebe Data Factory en Microsoft Fabric, una solución de análisis integral para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y la creación de informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

En este artículo se resume el uso de la actividad de copia en canalizaciones de Azure Data Factory y Azure Synapse para copiar datos con Salesforce como origen y destino. El documento se basa en el artículo de introducción a la actividad de copia que presenta información general de la actividad de copia.

Important

El conector de Salesforce V1 está en la fase de eliminación. Se recomienda actualizar el conector de Salesforce de V1 a V2.

Capacidades compatibles

Este conector de Salesforce es compatible con las funcionalidades siguientes:

Capacidades compatibles IR
Actividad de copia (origen/receptor) 1 2
Actividad de búsqueda 1 2

① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado

Para obtener una lista de los almacenes de datos que se admiten como orígenes o receptores, consulte la tabla de Almacenes de datos compatibles.

En concreto, este conector de Salesforce admite:

  • Ediciones de Salesforce Developer, Professional, Enterprise o Unlimited.
  • Copia de datos desde y hacia el dominio personalizado (el dominio personalizado puede configurarse tanto en entornos de producción como de espacio aislado).

Puedes establecer de forma explicita la versión de la API que se va a usar para leer y escribir datos a través de la propiedad apiVersion en el servicio vinculado. Al copiar datos a Salesforce, el conector usa la BULK API 2.0.

Prerequisites

  • El permiso API debe estar habilitado en Salesforce.

  • Debe configurar las aplicaciones conectadas en el portal de Salesforce consultando este documento oficial o nuestra guía paso a paso en la recomendación de este artículo.

    Important

    • El usuario de ejecución debe tener el permiso Solo API.
    • El tiempo de expiración del token de acceso podría cambiarse en lugar del token de actualización mediante directivas de sesión.

Límites de la API Salesforce Bulk 2.0

Usamos la API Salesforce Bulk 2.0 para consultar e ingerir datos. En la API Bulk 2.0, los lotes se crean automáticamente. Puede enviar hasta 15 000 lotes por periodo gradual de 24 horas. Si los lotes superan el límite, se producen errores.

En la API Bulk 2.0, solo los trabajos de ingesta consumen lotes. Los trabajos de consulta no. Para obtener más información, consulte Cómo se procesan las solicitudes en la Guía para desarrolladores de API Bulk 2.0.

Para obtener más información, consulte la sección "Límites generales" en Límites de desarrollador de Salesforce.

Get started

Para realizar la actividad de copia con una canalización, puede usar una de las siguientes herramientas o SDK:

Creación de un servicio vinculado a Salesforce mediante la interfaz de usuario

Siga estos pasos para crear un servicio vinculado a Salesforce en la interfaz de usuario de Azure Portal.

  1. Vaya a la pestaña "Administrar" de su área de trabajo de Azure Data Factory o Synapse y seleccione "Servicios vinculados"; a continuación, haga clic en "Nuevo":

  2. Busque Salesforce y seleccione el conector de Salesforce.

    Captura de pantalla del conector de Salesforce.

  3. Configure los detalles del servicio, pruebe la conexión y cree el servicio vinculado.

    Captura de pantalla de la configuración del servicio vinculado para Salesforce.

Detalles de configuración del conector

En las secciones siguientes se proporcionan detalles sobre las propiedades que se usan para definir entidades específicas para el conector de Salesforce.

Propiedades del servicio vinculado

Las siguientes propiedades son compatibles con el servicio vinculado Salesforce.

Property Description Required
type La propiedad type debe establecerse en SalesforceV2. Yes
environmentUrl Especifique la URL de la instancia de Salesforce.
Por ejemplo, especifica "https://<domainName>.my.salesforce.com" para copiar datos del dominio personalizado. Obtén información sobre cómo configurar o ver el dominio personalizado consultando este artículo.
Yes
authenticationType Tipo de autenticación que se usa para conectarse a Salesforce.
El valor permitido es OAuth2ClientCredentials.
Yes
clientId Especifica el Id. de cliente de la aplicación conectada de Salesforce OAuth 2.0. Para obtener más información, consulta este artículo. Yes
clientSecret Especifica el secreto de cliente de la aplicación conectada de Salesforce OAuth 2.0. Para obtener más información, consulta este artículo. Yes
apiVersion Especifique la versión Bulk API 2.0 de Salesforce que se va a usar, por ejemplo, 52.0. API Bulk 2.0 solo admite la versión de API >= 47.0. Para obtener información sobre la versión de API Bulk 2.0, consulta este artículo. Se produce un error si usa una versión de API inferior. Yes
connectVia El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si no se especifica, se usará Azure Integration Runtime. No

Ejemplo: Almacenamiento de credenciales

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "SecureString",
                "value": "<client secret>"
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Ejemplo: Almacenamiento de credenciales en Key Vault

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Ejemplo: Almacenar credenciales en Key Vault, así como environmentUrl y clientId

Al almacenar credenciales en Key Vault, así como environmentUrl y clientId, puede usar la interfaz de usuario para editar los valores. Se debe activar la casilla Especificar contenido dinámico en formato JSON y tiene que realizar esta configuración a mano. La ventaja de este escenario es que puede derivar todos los valores de configuración de Key Vault en lugar de parametrizar cualquier cosa aquí.

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of environment URL in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client ID in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propiedades del conjunto de datos

Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de Salesforce.

Para copiar datos desde y hacia Salesforce, establezca la propiedad type del conjunto de datos en SalesforceV2Object. Se admiten las siguientes propiedades.

Property Description Required
type La propiedad type debe establecerse en SalesforceV2Object. Yes
objectApiName El nombre del objeto de Salesforce desde el que se van a recuperar los datos. La versión del entorno de ejecución de integración autohospedado aplicable es la 5.44.8984.1 o superior. No para el origen (si se especifica "consulta" en el origen), Sí para el receptor
reportId El id. del informe de Salesforce desde el que se van a recuperar los datos. No se admite en el receptor. Hay limitaciones cuando se usan informes. La versión del entorno de ejecución de integración autohospedado aplicable es la 5.44.8984.1 o superior. No para el origen (si se especifica "consulta" en el origen), no admite el receptor

Important

La parte "__c" del nombre de la API es necesaria para cualquier objeto personalizado.

Nombre de API de la conexión a Salesforce

Example:

{
    "name": "SalesforceDataset",
    "properties": {
        "type": "SalesforceV2Object",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Propiedades de la actividad de copia

Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades admitidas por el origen y el receptor de Salesforce.

Salesforce como tipo de origen

Para copiar datos desde Salesforce, establezca el tipo de origen de la actividad de copia en SalesforceV2Source. En la sección source de la actividad de copia se admiten las siguientes propiedades.

Property Description Required
type La propiedad type del origen de la actividad de copia debe establecerse en: SalesforceV2Source. Yes
query Utilice la consulta personalizada para leer los datos. Solo puede usar la consulta del lenguaje de consulta de objetos de Salesforce (SOQL). Si no se especifica la consulta, se recuperan todos los datos del objeto de Salesforce especificado en "objectApiName/reportId" en el conjunto de datos. No (si se especifica "objectApiName/reportId" en el conjunto de datos)
includeDeletedObjects Indica si se van a consultar los registros existentes o todos, incluso los que se eliminaron. Si no se especifica, el comportamiento predeterminado es falso.
Valores permitidos: falso (predeterminado), verdadero.
No
partitionOption Proporcionar capacidad para detectar y aplicar de forma automática el algoritmo de partición óptimo para optimizar el rendimiento de lectura cuando sea aplicable. Se recomienda especificar AutoDetect para la copia de larga duración que puede beneficiarse de las lecturas multiproceso. El valor predeterminado es AutoDetect. No

Important

La parte "__c" del nombre de la API es necesaria para cualquier objeto personalizado.

Conexión a Salesforce - Lista de nombres de API

Example:

"activities":[
    {
        "name": "CopyFromSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceV2Source",
                "query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false,
                "partitionOption": "AutoDetect"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce como tipo de receptor

Para copiar datos hacia Salesforce, establezca el tipo de receptor de la actividad de copia en SalesforceV2Sink. En la sección sink de la actividad de copia se admiten las siguientes propiedades.

Property Description Required
type La propiedad type del receptor de la actividad de copia debe establecerse en SalesforceV2Sink. Yes
writeBehavior El comportamiento de escritura de la operación.
Los valores permitidos son: Insert y Upsert.
No (el valor predeterminado es Insert)
externalIdFieldName El nombre del campo de identificador externo para la operación de upsert. El campo especificado debe definirse como "Campo de identificador externo" en el objeto de Salesforce. No puede tener valores NULL en los datos de entrada correspondientes. Sí para "Upsert"
writeBatchSize El recuento de filas de datos escritos en Salesforce en cada lote. Sugiere establecer este valor de 10 000 a 200 000. Un número escaso de filas en cada lote reduce el rendimiento de la copia. Demasiadas filas de cada lote pueden provocar un tiempo de espera de la API. No (el valor predeterminado es 100 000)
ignoreNullValues Indica si se omiten los valores NULL de los datos de entrada durante la operación de escritura.
Los valores permitidos son true y false.
- True: deja los datos del objeto de destino sin cambiar cuando realiza una operación upsert o update. Inserta un valor predeterminado definido al realizar una operación insert.
- False: actualiza los datos del objeto de destino a NULL cuando realiza una operación upsert o update. Inserta un valor NULL al realizar una operación insert.
No (el valor predeterminado es false)
 maxConcurrentConnections Número máximo de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando quiera limitar las conexiones simultáneas.  No

Ejemplo: Receptor de Salesforce en la actividad de copia

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

Asignación de tipos de datos para Salesforce

Al copiar datos desde Salesforce, se usan las siguientes asignaciones de tipos de datos de Salesforce en los tipos de datos provisionales del servicio. Para más información acerca de la forma en que la actividad de copia asigna el tipo de datos y el esquema de origen al receptor, consulte el artículo sobre asignaciones de tipos de datos y esquema.

Tipos de datos de Salesforce Tipo de datos provisional del servicio
Número automático String
Checkbox Boolean
Currency Decimal
Date DateTime
Date/Time DateTime
Email String
ID String
Relación de búsqueda String
Lista de selección múltiple String
Number Decimal
Percent Decimal
Phone String
Picklist String
Text String
Área de texto String
Área de texto (largo) String
Área de texto (enriquecido) String
Texto (cifrado) String
URL String

Note

El tipo de número de Salesforce se asigna al tipo decimal en Azure Data Factory y en canalizaciones de Azure Synapse como un tipo de datos provisional de servicio. El tipo decimal respeta la precisión y la escala definidas. En el caso de los datos cuyas posiciones decimales superan la escala definida, el valor se redondea en los datos y la copia de vista previa. Para evitar la pérdida de precisión en las canalizaciones de Azure Data Factory y Azure Synapse, considere la posibilidad de aumentar las posiciones decimales a un valor razonablemente alto en la página Edición de definición de campo personalizado de Salesforce.

Propiedades de la actividad de búsqueda

Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.

Ciclo de vida y actualización del conector de Salesforce

En la tabla siguiente se muestran la fase de lanzamiento y los registros de cambios para diferentes versiones del conector de Salesforce:

Version Fase de lanzamiento Registro de cambios
Salesforce V1 Quitado No aplicable.
Salesforce V2 Versión de disponibilidad general disponible • Admite la autenticación OAuth2ClientCredentials en lugar de la autenticación básica.

• Solo admite consultas SOQL.

• Informe de soporte técnico seleccionando un identificador de informe.

• Soporte partitionOption en el origen de la actividad de copia.

readBehavior se reemplaza por includeDeletedObjects en el origen de la actividad de copia o la actividad de búsqueda.

Actualización del conector de Salesforce de V1 a V2

Estos son los pasos que le ayudarán a actualizar el conector Salesforce:

  1. Configura las aplicaciones conectadas en el portal de Salesforce; para ello, consulta los Requisitos previos.

  2. Cree un servicio vinculado de Salesforce y configúrelo consultando las propiedades del servicio vinculado. También debe actualizar manualmente los conjuntos de datos existentes que dependen del servicio vinculado antiguo y editar cada conjunto de datos para usar el nuevo servicio vinculado en su lugar.

  3. Si usa una consulta SQL en el origen de la actividad de copia o en la actividad de búsqueda que hace referencia al servicio vinculado V1, debe convertirlos a la consulta SOQL. Obtenga más información sobre la consulta SOQL de Salesforce como un tipo de origen y Salesforce Object Query Language (SOQL).

  4. Soporte partitionOption en el origen de la actividad de copia. Para obtener la configuración detallada, consulte Salesforce como un tipo de origen.

  5. readBehavior se reemplaza por includeDeletedObjects en el origen de la actividad de copia o la actividad de búsqueda. Para obtener la configuración detallada, consulte Salesforce como un tipo de origen.

Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos que se admiten.