Copier et transformer des données dans Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM à l’aide d’Azure Data Factory ou d’Azure Synapse Analytics
S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !
Cet article explique comment utiliser une activité de copie dans des pipelines Azure Data Factory ou Synapse pour copier des données depuis et vers Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM, et comment utiliser un workflow pour transformer des données dans Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM. Pour en savoir plus, lisez les articles d’introduction d’Azure Data Factory et d’Azure Synapse Analytics.
Fonctionnalités prises en charge
Ce connecteur est pris en charge pour les activités suivantes :
Fonctionnalités prises en charge | IR |
---|---|
Activité de copie (source/récepteur) | ① ② |
Mappage de flux de données (source/récepteur) | ① |
Activité de recherche | ① ② |
① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé
Pour obtenir la liste des magasins de données prises en charge par l'activité de copie en tant que sources et récepteurs, consultez la table Magasins de données pris en charge.
Notes
En date de novembre 2020, Common Data Service a été renommé Microsoft Dataverse. Cet article est mis à jour pour refléter la terminologie la plus récente.
Ce connecteur Dynamics prend en charge Dynamics versions 7 à 9, aussi bien en ligne qu’en local. Plus précisément :
- La version 7 mappe vers Dynamics CRM 2015.
- La version 8 mappe vers Dynamics CRM 2016 et la version anticipée de Dynamics 365.
- La version 9 mappe vers la dernière version de Dynamics 365.
Consultez le tableau suivant sur les configurations et les types d’authentification pris en charge pour en savoir plus sur les versions et produits Dynamics.
Versions de Dynamics | Types d’authentification | Exemples de services liés |
---|---|---|
Dataverse Dynamics 365 (en ligne) Dynamics CRM (en ligne) |
Principal de service Microsoft Entra Office 365 Identité managée affectée par l’utilisateur |
Dynamics Online et principal de service Microsoft Entra, ou authentification Office 365 |
Dynamics 365 en local avec un déploiement accessible sur Internet (IFD) Dynamics CRM 2016 local avec IFD Dynamics CRM 2015 local avec IFD |
IFD | Dynamics local avec IFD et authentification IFD |
Notes
Avec la dépréciation du Service de détection régionale, le service a été mis à niveau pour tirer profit du Service de détection globale tout en utilisant l’Authentification Office 365.
Important
Si votre locataire et votre utilisateur sont configurés dans Microsoft Entra ID pour l’accès conditionnel et/ou si l’authentification multifacteur est nécessaire, vous ne pourrez pas utiliser le type d’authentification Office 365. Dans ce cas, vous devez utiliser une authentification de principal de service Microsoft Entra.
Plus spécifiquement pour Dynamics 365, les types d’applications suivants sont pris en charge :
- Dynamics 365 pour les ventes
- Dynamics 365 pour le service client
- Dynamics 365 pour le service après-vente
- Dynamics 365 pour l’automatisation de service de projet
- Dynamics 365 pour le marketing
Ce connecteur ne prend pas en charge d’autres types d’applications comme Finance, Operations et Talent.
Conseil
Pour copier des données issues de Dynamics 365 for Finance and Operations, vous pouvez utiliser le connecteur Dynamics AX.
Ce connecteur Dynamics se base sur les outils Dynamics XRM.
Prérequis
Pour utiliser ce connecteur avec l’authentification du principal de service Microsoft Entra, vous devez configurer une authentification S2S (serveur à serveur) dans Dataverse ou Dynamics. Commencez par inscrire l’utilisateur de l’application (principal de service) dans Microsoft Entra ID. Vous pouvez découvrir comment procéder ici. Lors de l’inscription de l’application, vous devez créer cet utilisateur dans Dataverse ou Dynamics et accorder des autorisations. Ces autorisations peuvent être accordées directement ou indirectement en ajoutant l’utilisateur de l’application à une équipe à laquelle des autorisations ont été accordées dans Dataverse ou Dynamics. Vous trouverez plus d’informations sur la configuration d’un utilisateur d’application pour l’authentification auprès de Dataverse ici.
Bien démarrer
Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :
- L’outil Copier des données
- Le portail Azure
- Le kit SDK .NET
- Le kit SDK Python
- Azure PowerShell
- L’API REST
- Le modèle Azure Resource Manager
Créer un service lié à Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM à l’aide de l’interface utilisateur
Utilisez les étapes suivantes pour créer un service lié à Dynamics 365 dans l’interface utilisateur du portail Azure.
Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :
Recherchez Dynamics ou Dataverse et sélectionnez le connecteur Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
Informations de configuration des connecteurs
Les sections suivantes fournissent des informations détaillées sur les propriétés utilisées pour définir les entités spécifiques de Dynamics.
Propriétés du service lié
Les propriétés prises en charge pour le service lié Dynamics sont les suivantes :
Dynamics 365 et Dynamics CRM en ligne
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type doit être définie sur « Dynamics », « DynamicsCrm » ou « CommonDataServiceForApps ». | Oui |
deploymentType | Type de déploiement de l’instance Dynamics. La valeur doit être « En ligne » pour Dynamics en ligne. | Oui |
serviceUri | URL du service de votre instance Dynamics, la même que celle à laquelle vous accédez à partir du navigateur. Par exemple, « https://<organization-name>.crm[x].dynamics.com ». | Oui |
authenticationType | Type d’authentification pour se connecter à un serveur Dynamics. Les valeurs valides sont « AADServicePrincipal », « Office 365 » et « ManagedIdentity ». | Oui |
servicePrincipalId | ID client de l’application Microsoft Entra. | Oui lorsque l’authentification est « AADServicePrincipal » |
servicePrincipalCredentialType | Type d’informations d’identification à utiliser pour l’authentification de principal du service. Les valeurs valides sont « ServicePrincipalKey » et « ServicePrincipalCert ». Remarque : il est recommandé d’utiliser ServicePrincipalKey. Il existe une limitation connue pour le type d’informations d’identification ServicePrincipalCert où le service peut rencontrer un problème temporaire d’échec de la récupération du secret à partir du coffre de clés. |
Oui lorsque l’authentification est « AADServicePrincipal » |
servicePrincipalCredential | Informations d’identification du principal du service. Quand vous utilisez « ServicePrincipalKey » comme type d’informations d’identification, servicePrincipalCredential peut être une chaîne chiffrée par le service lors du déploiement du service lié. Il peut aussi s’agir d’une référence à un secret dans Azure Key Vault. Lorsque vous utilisez « ServicePrincipalCert » comme informations d’identification, servicePrincipalCredential doit faire référence à un certificat dans Azure Key Vault et vérifiez que le type de contenu du certificat est PKCS #12. |
Oui lorsque l’authentification est « AADServicePrincipal » |
username | Nom d'utilisateur pour la connexion à Dynamics. | Oui, lorsque l’authentification est « Office365 ». |
mot de passe | Mot de passe du compte d’utilisateur défini pour le nom d'utilisateur. Marquez ce champ avec « SecureString » afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. | Oui, lorsque l’authentification est « Office365 ». |
credentials | Spécifiez l’identité managée affectée par l’utilisateur en tant qu’objet d’informations d’identification. Créez une ou plusieurs identités managées affectées par l’utilisateur, attribuez-les à votre fabrique de données et créez des informations d’identification pour chaque identité managée affectée par l’utilisateur. |
Oui, lorsque l’authentification est « ManagedIdentity » |
connectVia | Le runtime d’intégration à utiliser pour se connecter à la banque de données. Si aucune valeur n’est spécifiée, la propriété utilise le runtime d'intégration Azure par défaut. | Non |
Notes
Le connecteur Dynamics a précédemment utilisé la propriété facultative organizationName pour identifier votre instance Dynamics CRM ou Dynamics 365 en ligne. Pendant qu’il continue de fonctionner, vous êtes invité à spécifier à la place la nouvelle propriété serviceUri pour obtenir de meilleures performances pour l’instance de détection.
Exemple : Dynamics Online avec le principal de service Microsoft Entra et l’authentification par clé
{
"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"
}
}
}
Exemple : Dynamics Online avec le principal de service Microsoft Entra et l’authentification par certificat
{
"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"
}
}
}
Exemple : Dynamics en ligne utilisant l’authentification 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"
}
}
}
Exemple : Dynamics en ligne utilisant l’authentification via une identité managée affectée par l’utilisateur
{
"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 et Dynamics CRM locaux avec IFD
Les propriétés supplémentaires comparables à celles de Dynamics en ligne sont hostName et port.
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type doit être définie sur « Dynamics », « DynamicsCrm » ou « CommonDataServiceForApps ». | Oui |
deploymentType | Type de déploiement de l’instance Dynamics. La valeur doit être « OnPremisesWithIfd » pour Dynamics local avec IFD. | Oui |
hostName | Nom d’hôte du serveur Dynamics local. | Oui |
port | Port du serveur Dynamics local. | Non. La valeur par défaut est 443. |
organizationName | Nom d’organisation de l’instance Dynamics. | Oui |
authenticationType | Type d’authentification pour se connecter au serveur Dynamics. Spécifiez « ActiveDirectoryAuthentication » pour Dynamics local avec IFD. | Oui |
domain | Le domaine Active Directory qui vérifie les informations d’identification de l’utilisateur. | Oui |
username | Nom d'utilisateur pour la connexion à Dynamics. | Oui |
mot de passe | Le mot de passe du compte d’utilisateur que vous avez défini pour le nom d’utilisateur. Vous pouvez marquer ce champ avec « SecureString » pour le stocker en toute sécurité. Vous pouvez également stocker le mot de passe dans Key Vault et laisser l’activité de copie l’y récupérer quand vous effectuez une copie de données. Pour plus d’informations, consultez Stocker des informations d’identification dans Azure Key Vault. | Oui |
connectVia | Le runtime d’intégration à utiliser pour se connecter à la banque de données. Si aucune valeur n’est spécifiée, la propriété utilise le runtime d'intégration Azure par défaut. | Non |
Remarque
En raison de l’arrêt du type d’authentification Ifd d’ici au 31 août 2024, effectuez une mise à niveau vers le type d’authentification Active Directory avant cette date si vous l’utilisez actuellement.
Exemple : Dynamics local avec IFD utilisant l’authentification 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"
}
}
}
Propriétés du jeu de données
Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données Dynamics.
Pour copier des données depuis et vers Dynamics, les propriétés suivantes sont prises en charge :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type du jeu de données doit être définie sur « DynamicsEntity », « DynamicsCrmEntity » ou « CommonDataServiceForAppsEntity ». | Oui |
entityName | Nom logique de l’entité à récupérer. | Non pour la source si « query » est spécifié dans la source de l’activité et oui pour le récepteur |
Exemple
{
"name": "DynamicsDataset",
"properties": {
"type": "DynamicsEntity",
"schema": [],
"typeProperties": {
"entityName": "account"
},
"linkedServiceName": {
"referenceName": "<Dynamics linked service name>",
"type": "linkedservicereference"
}
}
}
Propriétés de l’activité de copie
Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par les types de source et de récepteur Dynamics.
Dynamics en tant que type de source
Pour copier des données depuis Dynamics, les propriétés suivantes sont prises en charge dans la section source de l’activité de copie :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type de la source de l’activité de copie doit être définie sur « DynamicsSource », « DynamicsCrmSource » ou « CommonDataServiceForAppsSource ». | Oui |
query | FetchXML est un langage de requête propriétaire qui est utilisé dans Dynamics en ligne et local. Consultez l’exemple qui suit. Pour en savoir plus, consultez Générer des requêtes avec FetchXML. | Non si entityName est spécifié dans le jeu de données |
Notes
La colonne PK sera toujours copiée, même si la projection de colonne que vous avez configurée dans la requête FetchXML ne la contient pas.
Important
- Lorsque vous copiez des données à partir de Dynamics, le mappage de colonnes explicite de Dynamics au récepteur est facultatif. Toutefois, nous recommandons vivement le mappage pour garantir un résultat de copie déterministe.
- Lorsque le service importe un schéma dans l’interface utilisateur de création, il déduit le schéma. Pour ce faire, il échantillonne les premières lignes du résultat de la requête Dynamics pour initialiser la liste des colonnes sources. Dans ce cas, les colonnes sans valeurs dans les lignes du haut sont omises. Le même comportement s’applique aux exécutions de copies en l’absence d’un mappage explicite. Vous pouvez examiner le mappage et y ajouter des colonnes, ce qui sera respecté pendant l’exécution de la copie.
Exemple
"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>"
}
}
}
]
Exemple de requête FetchXML
<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 comme type de récepteur
Pour copier des données dans Dynamics, les propriétés suivantes sont prises en charge dans la section récepteur de l’activité de copie :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type du récepteur d’activité de copie doit être définie sur « DynamicsSink », « DynamicsCrmSink » ou « CommonDataServiceForAppsSink ». | Oui. |
writeBehavior | Comportement d’écriture de l’opération. La valeur doit être « Upsert ». | Oui |
alternateKeyName | Nom de clé de remplacement défini sur votre entité pour exécuter une opération upsert. | Non. |
writeBatchSize | Nombre de lignes de données écrites dans Dynamics pour chaque lot. | Non. La valeur par défaut est 10. |
ignoreNullValues | Indique s’il faut ignorer les valeurs null des données d’entrée autres que les champs clés lors d’une opération d’écriture. Les valeurs valides sont TRUE et FALSE :
|
Non. La valeur par défaut est FALSE. |
maxConcurrentConnections | La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. | Non |
Notes
La valeur par défaut du récepteur writeBatchSize et de l’activité de copie parallelCopies pour le récepteur Dynamics est de 10. Par conséquent, 100 enregistrements sont soumis simultanément à Dynamics par défaut.
Pour Dynamics 365 (en ligne), il existe une limite de 52 appels simultanés de lot par organisation. Si cette limite est dépassée, une exception « Serveur occupé » est levée avant l’exécution de la première requête. Conservez une valeur writeBatchSize inférieure ou égale à 10 pour éviter la limitation des appels simultanés.
La combinaison optimale de writeBatchSize et parallelCopies dépend du schéma de votre entité. Les éléments de schéma incluent le nombre de colonnes, la taille des lignes et le nombre de plug-ins, de flux de travail ou d’activités de flux de travail raccordés à ces appels. Le paramètre par défaut de writeBatchSize (10) × parallelCopies (10) est la recommandation du service Dynamics. Cette valeur fonctionne pour la plupart des entités Dynamics, même si elle peut ne pas offrir les meilleures performances. Vous pouvez améliorer les performances en ajustant cette combinaison dans les paramètres de votre activité de copie.
Exemple
"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
}
}
}
]
Récupération des données à partir des vues
Pour récupérer des données à partir des vues Dynamics, vous devez obtenir la requête enregistrée de la vue et utiliser la requête pour obtenir les données.
Il existe deux entités qui stockent différents types de vues : « requête enregistrée » stocke la vue système et « requête utilisateur » stocke la vue utilisateur. Pour obtenir les informations des vues, reportez-vous à la requête FetchXML suivante en remplaçant « TARGETENTITY » par savedquery
ou userquery
. Chaque type d’entité a plus d’attributs disponibles que vous pouvez ajouter à la requête en fonction de vos besoins. En savoir plus sur l’entité savedquery et l’entité userquery.
<fetch top="5000" >
<entity name="<TARGETENTITY>">
<attribute name="name" />
<attribute name="fetchxml" />
<attribute name="returnedtypecode" />
<attribute name="querytype" />
</entity>
</fetch>
Vous pouvez également ajouter des filtres pour filtrer les vues. Par exemple, ajoutez le filtre suivant pour obtenir une vue nommée « Mes comptes actifs » dans l’entité de compte.
<filter type="and" >
<condition attribute="returnedtypecode" operator="eq" value="1" />
<condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>
Mappage de type de données pour Dynamics
Lorsque vous copiez des données de Dynamics, la table suivante montre les mappages utilisés entre les types de données Dynamics et les types de données intermédiaires dans le service. Pour découvrir comment l’activité de copie mappe le schéma et le type de données sources au récepteur, consultez Mappages de schémas et de types de données.
Configurez le type de données intermédiaire correspondant dans une structure du jeu de données en fonction du type de données Dynamics de votre source à l’aide de la table de mappage suivante :
Type de données Dynamics | Type de données de service intermédiaire | Prise en charge en tant que source | Prise en charge en tant que récepteur |
---|---|---|---|
AttributeTypeCode.BigInt | Long | ✓ | ✓ |
AttributeTypeCode.Boolean | Boolean | ✓ | ✓ |
AttributeType.Customer | GUID | ✓ | ✓ (Consultez les conseils) |
AttributeType.DateTime | Datetime | ✓ | ✓ |
AttributeType.Decimal | Decimal | ✓ | ✓ |
AttributeType.Double | Double | ✓ | ✓ |
AttributeType.EntityName | String | ✓ | ✓ |
AttributeType.Integer | Int32 | ✓ | ✓ |
AttributeType.Lookup | GUID | ✓ | ✓ (Consultez les conseils) |
AttributeType.ManagedProperty | Boolean | ✓ | |
AttributeType.Memo | String | ✓ | ✓ |
AttributeType.Money | Decimal | ✓ | ✓ |
AttributeType.Owner | GUID | ✓ | ✓ (Consultez les conseils) |
AttributeType.Picklist | Int32 | ✓ | ✓ |
AttributeType.Uniqueidentifier | GUID | ✓ | ✓ |
AttributeType.String | String | ✓ | ✓ |
AttributeType.State | Int32 | ✓ | ✓ |
AttributeType.Status | Int32 | ✓ | ✓ |
Notes
Les types de données AttributeType.CalendarRules, AttributeType.MultiSelectPicklist et AttributeType.PartyList de Dynamics ne sont pas pris en charge.
Écriture de données dans un champ de recherche
Pour écrire des données dans un champ de recherche avec plusieurs cibles comme le client et le propriétaire, suivez les instructions et les exemples suivants :
Faites en sorte que votre source contienne à la fois la valeur du champ et le nom de l’entité cible correspondante.
- Si tous les enregistrements sont mappés à la même entité cible, assurez-vous que l’une des conditions suivantes est présente :
- Vos données sources comportent une colonne qui stocke le nom de l’entité cible.
- Vous avez ajouté une colonne supplémentaire dans la source de l’activité de copie pour définir l’entité cible.
- Si différents enregistrements sont mappés à des entités cibles différentes, assurez-vous que vos données sources contiennent une colonne qui stocke le nom de l’entité cible correspondante.
- Si tous les enregistrements sont mappés à la même entité cible, assurez-vous que l’une des conditions suivantes est présente :
Mappez la valeur et les colonnes de référence d’entité de la source au récepteur. La colonne de référence d’entité doit être mappée à une colonne virtuelle avec le modèle d’affectation de noms spécial
{lookup_field_name}@EntityReference
. La colonne n’existe pas réellement dans Dynamics. Elle est utilisée pour indiquer que cette colonne est la colonne de métadonnées du champ de recherche multicible donné.
Supposons, par exemple, que la source comporte les deux colonnes suivantes :
- La colonne CustomerField de type GUID, qui est la valeur de clé primaire de l’entité cible dans Dynamics.
- La colonne Target de type String, qui est le nom logique de l’entité cible.
Supposons également que vous souhaitez copier ces données dans le champ de l’entité Dynamics du récepteur CustomerField de type Customer.
Dans le mappage de colonne de copie-activité, mappez les deux colonnes comme suit :
- CustomerField pour CustomerField. Ce mappage est le mappage de champs normal.
- Cible pour CustomerField@EntityReference. La colonne du récepteur est une colonne virtuelle représentant la référence d’entité. Saisissez les noms de champs dans un mappage, car ils ne s’affichent pas en important des schémas.
Si tous vos enregistrements sources sont mappés à la même entité cible et que vos données sources ne contiennent pas le nom de l’entité cible, voici un raccourci : dans la source de l’activité de copie, ajoutez une colonne supplémentaire. Nommez la nouvelle colonne à l’aide du modèle {lookup_field_name}@EntityReference
, définissez la valeur sur le nom de l’entité cible, puis poursuivez le mappage de colonne comme d’habitude. Si vos noms de colonne source et récepteur sont identiques, vous pouvez également ignorer le mappage de colonnes explicite, car l’activité de copie par défaut mappe les colonnes par nom.
Écriture de données dans un champ de recherche via des clés alternatives
Pour écrire des données dans un champ de recherche en utilisant des colonnes de clés alternatives, suivez ces instructions et ces exemples :
Vérifiez que votre source contient toutes les colonnes clés de recherche.
Les colonnes clés alternatives doivent être mappées à la colonne avec le modèle de nommage spécial
{lookup_field_name}@{alternate_key_column_name}
. La colonne n’existe pas dans Dynamics. Elle est utilisée pour indiquer que cette colonne est utilisée pour rechercher l’enregistrement dans l’entité cible.Accédez à l’onglet Mappage dans la transformation du récepteur des flux de données de mappage. Sélectionnez la clé alternative comme colonne de sortie sous le champ Recherche. La valeur qui la suit indique les colonnes clés de cette clé alternative.
Une fois sélectionnée, les colonnes clés alternatives s’affichent automatiquement en dessous.
Mappez vos colonnes d’entrée à gauche avec les colonnes de sortie.
Notes
Actuellement, cela n’est pris en charge que lorsque vous utilisez le mode inlined dans la transformation du récepteur des flux de données de mappage.
Propriétés du mappage de flux de données
Lors de la transformation de données dans le flux de données de mappage, vous pouvez lire et écrire des données dans les tables Dynamics. Pour plus d’informations, consultez la transformation de la source et la transformation du récepteur dans le flux de données de mappage. Vous pouvez choisir d’utiliser un jeu de données Dynamics ou un jeu de données inlined en tant que type de source et de récepteur.
Transformation de la source
Le tableau ci-dessous répertorie les propriétés prises en charge par Dynamics. Vous pouvez modifier ces propriétés sous l’onglet Options de la source.
Nom | Description | Obligatoire | Valeurs autorisées | Propriété du script de flux de données |
---|---|---|---|---|
Nom de l’entité | Nom logique de l’entité à récupérer. | Oui, lorsque vous utilisez un jeu de données inline | - | (pour le jeu de données inlined uniquement) entité |
Requête | FetchXML est un langage de requête propriétaire qui est utilisé dans Dynamics en ligne et local. Consultez l’exemple qui suit. Pour en savoir plus, consultez Générer des requêtes avec FetchXML. | Non | String | query |
Notes
Si vous sélectionnez Requête comme type d’entrée, le type de colonne des tables ne peut pas être récupéré. Il sera traité comme une chaîne par défaut.
Exemple de script source Dynamics
Lorsque vous utilisez un jeu de données Dynamics comme type de source, le script de flux de données associé est le suivant :
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 vous utilisez un jeu de données inlined, le script de flux de données associé est le suivant :
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
Transformation du récepteur
Le tableau ci-dessous répertorie les propriétés prises en charge par un récepteur Dynamics. Vous pouvez modifier ces propriétés sous l’onglet Options du récepteur.
Name | Description | Obligatoire | Valeurs autorisées | Propriété du script de flux de données |
---|---|---|---|---|
Nom alternatif de la clé | Nom de clé de remplacement défini sur votre entité pour exécuter une opération de mise à jour, upsert ou suppression. | Non | - | alternateKeyName |
Mettre à jour la méthode | Spécifiez les opérations autorisées sur la destination de votre base de données. Par défaut, seules les insertions sont autorisées. Pour mettre à jour, effectuer un upsert ou supprimer des lignes, une transformation de modification de ligne est requise afin de baliser les lignes relatives à ces actions. |
Oui | true ou false |
insertable updateable upsertable deletable |
Nom de l’entité | Nom logique de l’entité à écrire. | Oui, lorsque vous utilisez un jeu de données inline | - | (pour le jeu de données inlined uniquement) entité |
Exemple de script de récepteur Dynamics
Lorsque vous utilisez un jeu de données Dynamics comme type de récepteur, le script de flux de données associé est le suivant :
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> DynamicsSink
Si vous utilisez un jeu de données inlined, le script de flux de données associé est le suivant :
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
Propriétés de l’activité Lookup
Pour en savoir plus sur les propriétés, consultez Activité Lookup.
Contenu connexe
Consultez les magasins de données pris en charge pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs par l’activité de copie.