Copia de datos en Salesforce Service Cloud con origen y destino mediante Azure Data Factory o Azure Synapse Analytics
SE APLICA A: Azure Data Factory Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno 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 los 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 Service 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.
Importante
El nuevo conector de Salesforce Service Cloud proporciona compatibilidad nativa mejorada con Salesforce Service Cloud. Si va a usar el conector de Salesforce Service Cloud heredado en la solución, actualice el conector de Salesforce Service Cloud antes del 11 de octubre de 2024. Consulte esta sección para más información sobre la diferencia entre la versión heredada y la versión más reciente.
Funcionalidades admitidas
Este conector de Salesforce Service Cloud es compatible con las funcionalidades siguientes:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/receptor) | ① ② |
Actividad de búsqueda | ① ② |
① 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 Service Cloud 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 Service Cloud, el conector usa BULK API 2.0.
Requisitos previos
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.
Importante
- 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, verá 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.
Introducción
Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:
- La herramienta Copiar datos
- Azure Portal
- El SDK de .NET
- El SDK de Python
- Azure PowerShell
- API REST
- La plantilla de Azure Resource Manager
Creación de un servicio vinculado a Salesforce Service Cloud mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado a Salesforce Service Cloud en la interfaz de usuario de Azure Portal.
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":
Busque Salesforce y seleccione el conector de Salesforce Service Cloud.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
Las secciones siguientes proporcionan detalles sobre las propiedades que se usan para definir entidades específicas para el conector Salesforce Service Cloud.
Propiedades del servicio vinculado
Se admiten las siguientes propiedades para el servicio vinculado de Salesforce Service Cloud.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en SalesforceServiceCloudV2. | Sí |
environmentUrl | Especifique la dirección URL de la instancia de Salesforce Service Cloud. 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. |
Sí |
authenticationType | Tipo de autenticación que se usa para conectarse a Salesforce Service Cloud. El valor permitido es OAuth2ClientCredentials. |
Sí |
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. | Sí |
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. | Sí |
apiVersion | Especifica la versión de la API Bulk 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. Si usas una versión de API inferior, se producirá un error. |
Sí |
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": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloudV2",
"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": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloudV2",
"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"
}
}
}
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 compatibles con el conjunto de datos de Salesforce Service Cloud.
Para copiar datos desde y hacia Salesforce Service Cloud, establece la propiedad type del conjunto de datos en SalesforceServiceCloudV2Object. Se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en SalesforceServiceCloudV2Object. | Sí |
objectApiName | El nombre de objeto de Salesforce Service Cloud del que se van a recuperar 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 identificador del informe de Salesforce Service Cloud del que se van a recuperar datos. No se admite en el receptor. Ten en cuenta que 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 |
Importante
La parte "__c" del nombre de la API es necesaria para cualquier objeto personalizado.
Ejemplo:
{
"name": "SalesforceServiceCloudDataset",
"properties": {
"type": "SalesforceServiceCloudV2Object",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce Service Cloud 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 Service Cloud.
Salesforce Service Cloud como tipo de origen
Para copiar datos de Salesforce Service Cloud, establece el tipo de origen de la actividad de copia en SalesforceServiceCloudV2Source. En la sección source de la actividad de copia se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del origen de la actividad de copia debe establecerse en SalesforceServiceCloudV2Source. | Sí |
Query | Utilice la consulta personalizada para leer los datos. Solo puede utilizar la consulta Salesforce Object Query Language (SOQL) con limitaciones. Para conocer las limitaciones de SOQL, consulte este artículo. Si no se especifica la consulta, se recuperarán 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 |
Importante
La parte "__c" del nombre de la API es necesaria para cualquier objeto personalizado.
Ejemplo:
"activities":[
{
"name": "CopyFromSalesforceServiceCloud",
"type": "Copy",
"inputs": [
{
"referenceName": "<Salesforce Service Cloud input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SalesforceServiceCloudV2Source",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
"includeDeletedObjects": false
},
"sink": {
"type": "<sink type>"
}
}
}
]
Salesforce Service Cloud como un tipo de receptor
Para copiar datos en Salesforce Service Cloud, establece el tipo de receptor de la actividad de copia en SalesforceServiceCloudV2Sink. En la sección sink de la actividad de copia se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del receptor de la actividad de copia debe establecerse en SalesforceServiceCloudV2Sink. | Sí |
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 Service Cloud. No puede tener valores NULL en los datos de entrada correspondientes. | Sí para "Upsert" |
writeBatchSize | El recuento de filas de datos escritos en Salesforce Service Cloud en cada lote. Sugiere establecer este valor de 10 000 a 200 000. Demasiadas pocas filas en cada lote reducirán 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: deje los datos del objeto de destino sin cambiar cuando realice una operación upsert o update. Inserta un valor predeterminado definido al realizar una operación insert. - False: actualice los datos del objeto de destino a NULL cuando realice 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 Service Cloud en una actividad de copia
"activities":[
{
"name": "CopyToSalesforceServiceCloud",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Salesforce Service Cloud output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SalesforceServiceCloudV2Sink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
Asignación de tipos de datos para Salesforce Service Cloud
Al copiar datos de Salesforce Service Cloud, se usan las siguientes asignaciones de tipos de datos de Salesforce Service Cloud en los tipos de datos provisionales internos en el 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.
Tipo de datos de Salesforce Service Cloud | Tipo de datos provisional del servicio |
---|---|
Numeración automática | String |
Casilla de verificación | Boolean |
Moneda | Decimal |
Date | DateTime |
Fecha y hora | DateTime |
String | |
ID | String |
Relación de búsqueda | String |
Lista desplegable de selección múltiple | String |
Number | Decimal |
Percent | Decimal |
Teléfono | String |
Lista desplegable | String |
Texto | String |
Área de texto | String |
Área de texto (largo) | String |
Área de texto (enriquecido) | String |
Texto (cifrado) | String |
URL | String |
Nota:
El tipo de número de Salesforce Service Cloud 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 superen la escala definida, el valor se redondeará 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, considera 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 Service Cloud.
Propiedades de la actividad de búsqueda
Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.
Actualice el servicio vinculado de Salesforce Service Cloud
Estos son los pasos que le ayudarán a actualizar el servicio vinculado y las consultas relacionadas:
Configura las aplicaciones conectadas en el portal de Salesforce; para ello, consulta los Requisitos previos.
Crea un nuevo servicio vinculado de Salesforce Service Cloud y configúralo haciendo referencia a las propiedades del servicio vinculado.
Si usas una consulta SQL en el origen de la actividad de copia o en la actividad de búsqueda que hace referencia al servicio vinculado heredado, debes convertirlos a la consulta SOQL. Obtén más información sobre la consulta SOQL de Salesforce Service Cloud como un tipo de origen y el lenguaje de consulta de objetos de Salesforce (SOQL).
readBehavior se sustituye por includeDeletedObjects en el origen de la actividad de copia o en la actividad de búsqueda. Para obtener información detallada sobre la configuración, consulte Salesforce Service Cloud como tipo de fuente.
Diferencias entre Salesforce Service Cloud y Salesforce Service Cloud (heredado)
El conector de Salesforce Service Cloud ofrece nuevas funcionalidades y es compatible con la mayoría de las funciones del conector de Salesforce Service Cloud (heredado). La siguiente tabla muestra las diferencias de funciones entre Salesforce Service Cloud y Salesforce Service Cloud (heredado).
Salesforce Service Cloud | Salesforce Service Cloud (heredado) |
---|---|
Compatibilidad con SOQL dentro de Salesforce Bulk API 2.0. Para consultas SOQL: • No se admiten las cláusulas GROUP BY, LIMIT, ORDER BY, OFFSET o TYPEOF. • No se admiten las funciones agregadas como COUNT(); puede usar informes de Salesforce para implementarlas. • No se admiten las funciones de fecha en las cláusulas GROUP BY, pero sí en la cláusula WHERE. • No se admiten campos de dirección compuestos ni campos de geolocalización compuestos. Como alternativa, consulte los componentes individuales de los campos compuestos. • No se admiten consultas de relación de elementos primarios a secundarios, mientras que se admiten consultas de relación de elementos secundarios a primarios. |
Admite la sintaxis SQL y SOQL. |
No se admiten objetos que contienen campos binarios al especificar la consulta. | No se admiten objetos que contienen campos binarios al especificar la consulta. |
Objetos admitidos dentro de Bulk API al especificar la consulta. | Se admiten objetos que no son compatibles con Bulk API al especificar la consulta. |
Admita el informe seleccionando un Id. de informe. | Sintaxis de consulta de informes, como {call "<report name>"} . |
Contenido relacionado
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.