Copia y transformación de datos en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM 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 más información sobre cómo iniciar una nueva evaluación gratuita!
En este artículo se describe cómo usar una actividad de copia en canalizaciones de Azure Data Factory o Synapse para copiar datos desde y hacia Dynamics 365 (Microsoft Dataverse) o Dynamics CRM, y cómo usar un flujo de datos para transformar datos en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM. Para obtener más información, lea los artículos de introducción a Azure Data Factory y Azure Synapse Analytics.
Funcionalidades admitidas
Este conector es compatible con las actividades siguientes:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/receptor) | ① ② |
Flujo de datos de asignación (origen/receptor) | ① |
Actividad de búsqueda | ① ② |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
Consulte la tabla de almacenes de datos que se admiten para ver una lista de los almacenes de datos que la actividad de copia admite como orígenes y receptores.
Nota
Desde noviembre de 2020, se cambió el nombre de Common Data Service por Microsoft Dataverse. Este artículo se actualiza para reflejar la terminología más reciente.
Este conector de Dynamics es compatible con las versiones 7 a 9.x de Dynamics, tanto en línea como en el entorno local. Más concretamente:
- La versión 7 se asigna a Dynamics CRM 2015.
- La versión 8 se asigna a Dynamics CRM 2016 y a la versión anterior de Dynamics 365.
- La versión 9 se asigna a la versión más reciente de Dynamics 365.
Consulte en la tabla siguiente los tipos y configuraciones de autenticación compatibles para las versiones o productos de Dynamics.
Versiones de Dynamics | Tipos de autenticación | Ejemplos de servicios vinculados |
---|---|---|
Dataverse Dynamics 365 Online Dynamics CRM Online |
Entidad de servicio de Microsoft Entra Office 365 Identidad administrada asignada por el usuario |
Autenticación de Office 365 o entidad de servicio de Microsoft Entra y Dynamics en línea |
Dynamics 365 en el entorno local con implementación con conexión a Internet (IFD) Dynamics CRM 2016 local con IFD Dynamics CRM 2015 local con IFD |
IFD | Dynamics en el entorno local con IFD y la autenticación de IFD |
Nota
Con el desuso del servicio de detección regional, el servicio se ha actualizado para aprovechar el servicio de detección global mientras se usa la autenticación de Office 365.
Importante
El inquilino y el usuario están configurados en Microsoft Entra ID para el acceso condicional, o bien, si la autenticación multifactor es necesaria, no podrá usar el tipo de autenticación de Office 365. En esas situaciones, debe usar una autenticación de entidad de servicio de Microsoft Entra.
Para Dynamics 365 en concreto, se admiten los siguientes tipos de aplicación:
- Dynamics 365 for Sales
- Dynamics 365 for Customer Service
- Dynamics 365 for Field Service
- Dynamics 365 for Project Service Automation
- Dynamics 365 for Marketing
Este conector no admite otros tipos de aplicaciones como Finance, Operations o Talent.
Sugerencia
Para copiar datos desde Dynamics 365 Finance and Operations, puede usar el conector de Dynamics AX.
Este conector de Dynamics se basa en las herramientas de Dynamics XRM.
Requisitos previos
Para usar este conector con la autenticación de la entidad de servicio de Microsoft Entra, debe configurar la autenticación de servidor a servidor (S2S) en Dataverse o Dynamics. En primer lugar, registre el usuario de la aplicación (entidad de servicio) en Microsoft Entra ID. Puede descubrir cómo hacerlo aquí. Durante el registro de la aplicación, deberá crear ese usuario en Dataverse o Dynamics y conceder permisos. Estos permisos se pueden conceder directa o indirectamente si se agrega el usuario de la aplicación a un equipo al que se han concedido permisos en Dataverse o Dynamics. Puede encontrar más información sobre cómo configurar un usuario de la aplicación para autenticarse con Dataverse aquí.
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 Dynamics 365 (Microsoft Dataverse) o Dynamics CRM mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado a Dynamics 365 en la interfaz de usuario de Azure Portal.
Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:
Busque Dynamics o Dataverse y seleccione Dynamics 365 (Microsoft Dataverse) o el conector de Dynamics CRM.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
En las secciones siguientes se proporcionan detalles sobre las propiedades que se usan para definir entidades específicas de Dynamics.
Propiedades del servicio vinculado
Las siguientes propiedades son compatibles con el servicio vinculado de Dynamics.
Dynamics 365 y Dynamics CRM en línea
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps". | Sí |
deploymentType | El tipo de implementación de la instancia de Dynamics. El valor debe ser "Online" para Dynamics en línea. | Sí |
serviceUri | Dirección URL de servicio de la instancia de Dynamics, la misma a la que se accede desde el explorador. Un ejemplo es "https://<organization-name>.crm[x].dynamics.com". | Sí |
authenticationType | Tipo de autenticación para conectarse a un servidor de Dynamics. Los valores válidos son "AADServicePrincipal", "Office365" y "ManagedIdentity". | Sí |
servicePrincipalId | El identificador de cliente de la aplicación de Microsoft Entra. | Sí, cuando la autenticación es "AADServicePrincipal" |
servicePrincipalCredentialType | Tipo de credencial que se usará para la autenticación de entidad de servicio. Los valores válidos son "ServicePrincipalKey" y "ServicePrincipalCert". Nota: Se recomienda usar ServicePrincipalKey. Hay una limitación conocida para el tipo de credencial ServicePrincipalCert, donde el servicio puede encontrar un problema transitorio de no recuperar el secreto del almacén de claves. |
Sí, cuando la autenticación es "AADServicePrincipal" |
servicePrincipalCredential | Credencial de entidad de seguridad de servicio. Cuando se usa "ServicePrincipalKey" como tipo de credencial, servicePrincipalCredential puede ser una cadena que el servicio cifra en la implementación del servicio vinculado. O bien, puede ser una referencia a un secreto en Azure Key Vault. Cuando use "ServicePrincipalCert" como credencial, servicePrincipalCredential debe ser una referencia a un certificado en Azure Key Vault, y asegúrese de que el tipo de contenido del certificado sea PKCS #12. |
Sí, cuando la autenticación es "AADServicePrincipal" |
username | Nombre de usuario para conectarse a Dynamics. | Sí, cuando la autenticación es "Office365" |
password | Contraseña de la cuenta de usuario que especificó como nombre de usuario. Marque este campo como "SecureString" para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. | Sí, cuando la autenticación es "Office365" |
credentials | Especifique la identidad administrada asignada por el usuario como objeto de credencial. Cree una o varias identidades administradas asignadas por el usuario, asígnelas a la factoría de datos y cree credenciales para cada identidad. |
Sí, cuando la autenticación es "ManagedIdentity" |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si no se especifica ningún valor, la propiedad usa el entorno de ejecución de integración de Azure predeterminado. | No |
Nota
El conector de Dynamics usaba antes la propiedad opcional organizationName para identificar la instancia de Dynamics CRM o Dynamics 365 en línea. Mientras la propiedad siga funcionando, es preferible especificar la nueva propiedad serviceUri en su lugar para lograr un mejor rendimiento de detección de la instancia.
Ejemplo: Dynamics en línea con la entidad de servicio de Microsoft Entra y autenticación de claves
{
"name": "DynamicsLinkedService",
"properties": {
"type": "Dynamics",
"typeProperties": {
"deploymentType": "Online",
"serviceUri": "https://<organization-name>.crm[x].dynamics.com",
"authenticationType": "AADServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalKey",
"servicePrincipalCredential": "<service principal key>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: Dynamics en línea con la entidad de servicio de Microsoft Entra y autenticación de certificados
{
"name": "DynamicsLinkedService",
"properties": {
"type": "Dynamics",
"typeProperties": {
"deploymentType": "Online",
"serviceUri": "https://<organization-name>.crm[x].dynamics.com",
"authenticationType": "AADServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalCert",
"servicePrincipalCredential": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<AKV reference>",
"type": "LinkedServiceReference"
},
"secretName": "<certificate name in AKV>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: Dynamics en línea mediante la autenticación de Office 365
{
"name": "DynamicsLinkedService",
"properties": {
"type": "Dynamics",
"typeProperties": {
"deploymentType": "Online",
"serviceUri": "https://<organization-name>.crm[x].dynamics.com",
"authenticationType": "Office365",
"username": "test@contoso.onmicrosoft.com",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: uso de la autenticación de identidad administrada asignada por el usuario por parte de Dynamics Online
{
"name": "DynamicsLinkedService",
"properties": {
"type": "Dynamics",
"typeProperties": {
"deploymentType": "Online",
"serviceUri": "https://<organization-name>.crm[x].dynamics.com",
"authenticationType": "ManagedIdentity",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Dynamics 365 y Dynamics CRM local con IFD
Las propiedades adicionales, en comparación con Dynamics en línea, son hostName y port.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps". | Sí |
deploymentType | El tipo de implementación de la instancia de Dynamics. Debe ser "OnPremisesWithIfd" para Dynamics en el entorno local con IFD. | Sí |
hostName | El nombre de host del servidor local de Dynamics. | Sí |
port | El puerto del servidor local de Dynamics. | No. El valor predeterminado es 443. |
organizationName | El nombre de la organización de la instancia de Dynamics. | Sí |
authenticationType | Tipo de autenticación para conectarse al servidor de Dynamics. Especifique "ActiveDirectoryAuthentication" para Dynamics local con IFD. | Sí |
dominio | Dominio de Active Directory que comprobará las credenciales de usuario. | Sí |
username | Nombre de usuario para conectarse a Dynamics. | Sí |
password | Contraseña de la cuenta de usuario especificada para el nombre de usuario. Este campo se puede marcar como "SecureString" para almacenarlo de forma segura. También puede almacenar una contraseña en Key Vault y permitir que la actividad de copia se extraiga desde allí cuando realice la copia de datos. Más información sobre Almacenamiento de credenciales en Key Vault. | Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si no se especifica ningún valor, la propiedad usa el entorno de ejecución de integración de Azure predeterminado. | No |
Nota:
Debido a la desaparición del tipo de autenticación Ifd el 31 de agosto de 2024, actualice al tipo de autenticación Active Directory antes de la fecha si lo está utilizando actualmente.
Ejemplo: Dynamics local con IFD mediante la autenticación de Active Directory
{
"name": "DynamicsLinkedService",
"properties": {
"type": "Dynamics",
"description": "Dynamics on-premises with IFD linked service using IFD authentication",
"typeProperties": {
"deploymentType": "OnPremisesWithIFD",
"hostName": "contosodynamicsserver.contoso.com",
"port": 443,
"organizationName": "admsDynamicsTest",
"authenticationType": "ActiveDirectoryAuthentication",
"domain": "< Active Directory domain >",
"username": "test@contoso.onmicrosoft.com",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"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 Dynamics.
Para copiar datos con Dynamics como origen o destino, se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en "DynamicsEntity", "DynamicsCrmEntity" o "CommonDataServiceForAppsEntity". | Sí |
entityName | El nombre lógico de la entidad que se va a recuperar. | No para el origen si se especifica "query" en el origen de la actividad y sí para el receptor |
Ejemplo
{
"name": "DynamicsDataset",
"properties": {
"type": "DynamicsEntity",
"schema": [],
"typeProperties": {
"entityName": "account"
},
"linkedServiceName": {
"referenceName": "<Dynamics 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 que admite el tipo de origen y el tipo de receptor de Dynamics.
Dynamics como tipo de origen
Para copiar datos desde Dynamics, 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 "DynamicsSource", "DynamicsCrmSource" o "CommonDataServiceForAppsSource". | Sí |
Query | FetchXML es un lenguaje de consulta patentado que se usa en Dynamics en línea y en el entorno local. Consulte el ejemplo siguiente. Para más información, consulte Build queries with FetchXML (Creación de consultas con FetchXML). | No, si se especifica entityName en el conjunto de datos |
Nota
La columna PK siempre se copiará incluso si la proyección de columna que se configura en la consulta de FetchXML no la contiene.
Importante
- Al copiar datos desde Dynamics, la asignación de columnas explícita de Dynamics al receptor es opcional. Sin embargo, se recomienda encarecidamente la asignación para garantizar un resultado de copia determinista.
- Cuando el servicio importa un esquema en la interfaz de usuario de creación, lo infiere. Para ello, muestrea las primeras filas del resultado de la consulta de Dynamics a fin de inicializar la lista de columnas de origen. En ese caso, se omiten las columnas sin valores en las filas superiores. El mismo comportamiento se aplica también a la vista previa de los datos y a las ejecuciones de copia si no existe una asignación explícita. Puede revisar y agregar más columnas a la asignación, que se respetarán durante el tiempo de ejecución de la copia.
Ejemplo
"activities":[
{
"name": "CopyFromDynamics",
"type": "Copy",
"inputs": [
{
"referenceName": "<Dynamics input dataset>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DynamicsSource",
"query": "<FetchXML Query>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Consulta FetchXML de ejemplo
<fetch>
<entity name="account">
<attribute name="accountid" />
<attribute name="name" />
<attribute name="marketingonly" />
<attribute name="modifiedon" />
<order attribute="modifiedon" descending="false" />
<filter type="and">
<condition attribute ="modifiedon" operator="between">
<value>2017-03-10 18:40:00z</value>
<value>2017-03-12 20:40:00z</value>
</condition>
</filter>
</entity>
</fetch>
Dynamics como tipo de receptor
Para copiar datos a Dynamics, la sección sink de la actividad de copia admite las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del receptor de la actividad de copia debe establecerse en "DynamicsSink", "DynamicsCrmSink" o "CommonDataServiceForAppsSink". | Sí. |
writeBehavior | El comportamiento de escritura de la operación. El valor debe ser "Upsert". | Sí |
alternateKeyName | Nombre de clave alternativo definido en la entidad para realizar una operación de actualización e inserción. | No. |
writeBatchSize | El recuento de filas de datos escritos en Dynamics en cada lote. | No. El valor predeterminado es 10. |
ignoreNullValues | Si durante la operación de escritura se omiten los valores nulos de los datos de entrada excepto los campos de clave. Los valores válidos son TRUE y FALSE:
|
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 |
Nota
El valor predeterminado tanto del receptor writeBatchSize como de la actividad de copia parallelCopies del receptor de Dynamics es 10. Por lo tanto, se envían 100 registros simultáneamente de forma predeterminada a Dynamics.
Para Dynamics 365 en línea, hay un límite de 52 llamadas por lotes simultáneas por organización. Si se supera ese límite, se produce un error de "Servidor ocupado" antes incluso de que se ejecute la primera solicitud. Mantenga writeBatchSize en 10 o menos para evitar la limitación de llamadas simultáneas.
La combinación óptima de writeBatchSize y parallelCopies depende del esquema de la entidad. Los elementos del esquema incluyen el número de columnas, tamaño de las filas y número de complementos, flujos de trabajo o actividades de flujo de trabajo enlazadas a esas llamadas. La configuración predeterminada de writeBatchSize (10) x parallelCopies (10) es la recomendación de acuerdo con el servicio Dynamics. Este valor funciona con la mayoría de las entidades de Dynamics, aunque es posible que no ofrezca el mejor rendimiento. Para optimizar el rendimiento, ajuste la combinación en su configuración de la actividad de copia.
Ejemplo
"activities":[
{
"name": "CopyToDynamics",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Dynamics output dataset>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "DynamicsSink",
"writeBehavior": "Upsert",
"writeBatchSize": 10,
"ignoreNullValues": true
}
}
}
]
Recuperación de datos de las vistas
Para recuperar datos de las vistas de Dynamics, debe obtener la consulta guardada de la vista y usar la consulta para obtener los datos.
Hay dos entidades que almacenan distintos tipos de vista: "consulta guardada" almacena la vista del sistema "consulta de usuario" almacena la vista del usuario. Para obtener información de las vistas, consulte la siguiente consulta FetchXML y reemplace "TARGETENTITY" por savedquery
o userquery
. Cada tipo de entidad tiene más atributos disponibles que puede agregar a la consulta en función de sus necesidades. Obtenga más información sobre la entidad savedquery y la entidad userquery.
<fetch top="5000" >
<entity name="<TARGETENTITY>">
<attribute name="name" />
<attribute name="fetchxml" />
<attribute name="returnedtypecode" />
<attribute name="querytype" />
</entity>
</fetch>
También puede agregar filtros para filtrar las vistas. Por ejemplo, agregue el siguiente filtro para obtener una vista denominada "Mis cuentas activas" en entidad de cuenta.
<filter type="and" >
<condition attribute="returnedtypecode" operator="eq" value="1" />
<condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>
Asignación de tipos datos de Dynamics
Al copiar los datos desde Dynamics, la tabla siguiente muestra las asignaciones de tipos de datos de Dynamics a los tipos de datos provisionales del servicio. Para obtener información acerca de la forma en que la actividad de copia asigna el esquema de origen y el tipo de datos a un receptor, consulte Asignación de esquemas en la actividad de copia.
Configure el tipo de datos provisional correspondiente en la estructura del conjunto de datos en función del tipo de datos de Dynamics de origen mediante la siguiente tabla de asignación:
Tipo de datos de Dynamics | Tipo de datos provisional del servicio | Se admite como origen | Se admite como receptor |
---|---|---|---|
AttributeTypeCode.BigInt | long | ✓ | ✓ |
AttributeTypeCode.Boolean | Boolean | ✓ | ✓ |
AttributeType.Customer | GUID | ✓ | ✓ (Consulte guía) |
AttributeType.DateTime | Datetime | ✓ | ✓ |
AttributeType.Decimal | Decimal | ✓ | ✓ |
AttributeType.Double | Double | ✓ | ✓ |
AttributeType.EntityName | String | ✓ | ✓ |
AttributeType.Integer | Int32 | ✓ | ✓ |
AttributeType.Lookup | GUID | ✓ | ✓ (Consulte guía) |
AttributeType.ManagedProperty | Boolean | ✓ | |
AttributeType.Memo | String | ✓ | ✓ |
AttributeType.Money | Decimal | ✓ | ✓ |
AttributeType.Owner | GUID | ✓ | ✓ (Consulte guía) |
AttributeType.Picklist | Int32 | ✓ | ✓ |
AttributeType.Uniqueidentifier | GUID | ✓ | ✓ |
AttributeType.String | String | ✓ | ✓ |
AttributeType.State | Int32 | ✓ | ✓ |
AttributeType.Status | Int32 | ✓ | ✓ |
Nota
Los tipos de datos AttributeType.CalendarRules, AttributeType.MultiSelectPicklist y AttributeType.PartyList no se admiten.
Escritura de datos en un campo de búsqueda
Para escribir datos en un campo de búsqueda con varios destinos como Customer y Owner, siga estas instrucciones y el ejemplo:
Haga que el origen contenga tanto el valor del campo como el nombre de la entidad de destino correspondiente.
- Si todos los registros se asignan a la misma entidad de destino, asegúrese una de las siguientes condiciones:
- Los datos de origen tienen una columna que almacena el nombre de la entidad de destino.
- Ha agregado una columna adicional en el origen de la actividad de copia para definir la entidad de destino.
- Si hay registros diferentes asignados a diferentes entidades de destino, asegúrese de que los datos de origen tengan una columna que almacene el nombre de la entidad de destino correspondiente.
- Si todos los registros se asignan a la misma entidad de destino, asegúrese una de las siguientes condiciones:
Asigne tanto las columnas de valor y de referencia de entidad del origen al receptor. La columna de referencia de entidad debe asignarse a una columna virtual con el patrón de nomenclatura especial
{lookup_field_name}@EntityReference
. La columna no existe realmente en Dynamics. Se usa para indicar que es la columna de metadatos del campo de búsqueda de múltiples destinos especificado.
Establecer el campo Propietario
Al establecer el campo Propietario en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM, es importante proporcionar una referencia válida. Las opciones válidas para la @EntityReference
son:
systemuser
: esto hace referencia a un usuario individual dentro del sistema.team
: esto hace referencia a un equipo de usuarios dentro de la organización.
Asegúrese de que el valor proporcionado corresponde a una de estas opciones para evitar errores durante la transformación de datos.
Por ejemplo, suponga que el origen tiene estas dos columnas:
- CustomerField columna de tipo GUID, que es el valor de clave principal de la entidad de destino en Dynamics.
- Target columna de tipo String, que es el nombre lógico de la entidad de destino.
Supongamos también que desea copiar estos datos al campo de entidad de Dynamics receptor CustomerField de tipo Customer.
En la asignación de columnas de copia y actividad, asigne las dos columnas como se indica a continuación:
- CustomerField a CustomerField. Se trata de la asignación de campos normal.
- Destino a CustomerField@EntityReference. La columna de receptor es una columna virtual que representa la referencia de entidad. Escriba estos nombres de campo en una asignación, ya que no se mostrarán mediante la importación de esquemas.
Si todos los registros de origen se asignan a la misma entidad de destino y los datos de origen no contienen el nombre de la entidad de destino, este es un acceso directo: en el origen de la actividad de copia, agregue una columna adicional. Asigne un nombre a la nueva columna mediante el patrón {lookup_field_name}@EntityReference
, establezca el valor en el nombre de la entidad de destino y, después, continúe con la asignación de columnas como de costumbre. Si los nombres de las columnas del origen y el receptor son idénticos, también puede omitir la asignación de columnas explícita, ya que la actividad de copia asigna las columnas por nombre de forma predeterminada.
Escribir datos en un campo de búsqueda mediante claves alternativas
Para escribir datos en un campo de búsqueda mediante columnas de clave alternativas, siga esta guía y este ejemplo:
Asegúrese de que el origen contenga todas las columnas de clave de búsqueda.
Las columnas de clave alternativas deben asignarse a la columna con el patrón de nomenclatura especial
{lookup_field_name}@{alternate_key_column_name}
. La columna no existe en Dynamics. Se usa para indicar que esta columna se usa para buscar el registro en la entidad de destino.Vaya a la pestaña Asignación en la transformación de receptor de los flujos de datos de asignación. Seleccione la clave alternativa como columnas de salida en el campo Búsqueda. Después, el valor indicará las columnas de clave de esta clave alternativa.
Una vez seleccionada, las columnas de clave alternativas se mostrarán automáticamente a continuación.
Asigne las columnas de entrada a la izquierda con las columnas de salida.
Nota
Actualmente, solo se admite cuando se usa el modo alienado en la transformación de receptor de los flujos de datos de asignación.
Propiedades de Asignación de instancias de Data Flow
Al transformar datos en un flujo de datos de asignación, puede leer y escribir en tablas de Dynamics. Para más información, vea la transformación de origen y la transformación de receptor en Asignación de Data Flow. Puede optar por usar un conjunto de datos de Dynamics o un conjunto de datos alineado como tipo de origen y receptor.
Transformación de origen
En la tabla siguiente se enumeran las propiedades que admite Dynamics. Puede editar estas propiedades en la pestaña Source options (Opciones de origen).
Nombre | Descripción | Obligatorio | Valores permitidos | Propiedad de script de flujo de datos |
---|---|---|---|---|
Nombre de entidad | El nombre lógico de la entidad que se va a recuperar. | Sí, cuando se usa el conjunto de datos insertado | - | (solo para conjunto de datos en línea) Entidad |
Consultar | FetchXML es un lenguaje de consulta patentado que se usa en Dynamics en línea y en el entorno local. Consulte el ejemplo siguiente. Para más información, consulte Build queries with FetchXML (Creación de consultas con FetchXML). | No | String | Query |
Nota:
Si selecciona Consulta como tipo de entrada, no se puede recuperar el tipo de columna de las tablas. Se tratará como cadena de forma predeterminada.
Ejemplo de script de origen de Dynamics
Cuando se usa el conjunto de datos de Dynamics como tipo de origen, el script de flujo de datos asociado es el siguiente:
source(allowSchemaDrift: true,
validateSchema: false,
query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource
Si se usa un conjunto de datos en línea, el script de flujo de datos asociado es:
source(allowSchemaDrift: true,
validateSchema: false,
store: 'dynamics',
format: 'dynamicsformat',
entity: 'Entity1',
query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource
Transformación de receptor
En la tabla siguiente se enumeran las propiedades que admite un receptor de Dynamics. Puede editar estas propiedades en la pestaña Opciones del receptor.
Nombre | Descripción | Obligatorio | Valores permitidos | Propiedad de script de flujo de datos |
---|---|---|---|---|
Nombre de clave alternativo | Nombre de clave alternativo definido en la entidad para realizar una operación de actualización, inserción o eliminación. | No | - | alternateKeyName |
Método de actualización | Especifique qué operaciones se permiten en el destino de la base de datos. El valor predeterminado es permitir solamente las inserciones. Para actualizar, upsert o eliminar filas, se requiere una transformación de alteración de fila a fin de etiquetar filas para esas acciones. |
Sí | true o false |
insertable updateable upsertable deletable |
Nombre de entidad | El nombre lógico de la entidad que se va a escribir. | Sí, cuando se usa el conjunto de datos insertado | - | (solo para conjunto de datos en línea) Entidad |
Ejemplo de script de receptor de Dynamics
Cuando se usa el conjunto de datos de Dynamics como tipo de receptor, el script de flujo de datos asociado es el siguiente:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> DynamicsSink
Si se usa un conjunto de datos en línea, el script de flujo de datos asociado es:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
store: 'dynamics',
format: 'dynamicsformat',
entity: 'Entity1',
deletable: true,
insertable: true,
updateable: true,
upsertable: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> DynamicsSink
Propiedades de la actividad de búsqueda
Para información detallada sobre las propiedades, consulte Actividad de búsqueda.
Contenido relacionado
Para obtener una lista de los almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos admitidos.