Copiare e trasformare dati in Dynamics 365 (Microsoft Dataverse) o Dynamics CRM usando Azure Data Factory o Azure Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
Questo articolo spiega come usare un'attività Copy nelle pipeline di Azure Data Factory o Synapse per copiare dati da/in Dynamics 365 (Microsoft Dataverse) o Dynamics CRM e usare un flusso di dati per trasformare dati in Dynamics 365 (Microsoft Dataverse) o Dynamics CRM. Per altre informazioni, leggere gli articoli introduttivi Azure Data Factory e Azure Synapse Analytics.
Funzionalità supportate
Il connettore è supportato per le attività seguenti:
Funzionalità supportate | IR |
---|---|
Attività di copia (origine/sink) | (1) (2) |
Flusso di dati per mapping (origine/sink) | (1) |
Attività Lookup | (1) (2) |
① Azure Integration Runtime ② Runtime di integrazione self-hosted
Per un elenco di archivi dati supportati da un'attività Copy come origini o sink, vedere la tabella Archivi dati supportati.
Nota
A partire da novembre 2020, Common Data Service è stato rinominato in Microsoft Dataverse. Questo articolo è aggiornato in base alla terminologia più recente.
Questo connettore Dynamics supporta le versioni da 7 a 9 di Dynamics sia online che in locale. In particolare:
- La versione 7 esegue il mapping a Dynamics CRM 2015.
- La versione 8 esegue il mapping a Dynamics CRM 2016 e alla versione iniziale di Dynamics 365.
- La versione 9 esegue il mapping alla versione successiva di Dynamics 365.
Fare riferimento alla seguente tabella delle configurazioni e dei tipi di autenticazione supportati per le versioni e i prodotti Dynamics.
Versioni di Dynamics | Tipi di autenticazione | Esempi di servizi collegati |
---|---|---|
Dataverse Dynamics 365 Online Dynamics CRM Online |
Entità servizio Microsoft Entra Office 365 Identità gestita assegnata dall'utente |
Dynamics online ed entità servizio Microsoft Entra o autenticazione di Office 365 |
Dynamics 365 locale con distribuzione con connessione Internet (IFD) Dynamics CRM 2016 locale con IFD Dynamics CRM 2015 locale con IFD |
IFD | Dynamics locale con IFD e autenticazione IFD |
Nota
Con la deprecazione del Servizio di individuazione a livello di area, il servizio è stato aggiornato per sfruttare il Servizio di individuazione globale quando si usa l'autenticazione di Office 365.
Importante
Se il tenant e l'utente sono configurati in Microsoft Entra ID per l'accesso condizionale e/o è necessaria l'autenticazione a più fattori, non sarà possibile usare il tipo di autenticazione di Office 365. Per tali situazioni, è necessario usare un'autenticazione dell'entità servizio Microsoft Entra.
Per Dynamics 365 in particolare, sono supportati i tipi di applicazioni seguenti:
- Dynamics 365 for Sales
- Dynamics 365 for Customer Service
- Dynamics 365 for Field Service
- Dynamics 365 for Project Service Automation
- Dynamics 365 for Marketing
Questo connettore non supporta altri tipi di applicazioni come Finance, Operations e Talent.
Suggerimento
Per copiare dati da Dynamics 365 Finance e Operations, è possibile usare il connettore Dynamics AX.
Questo connettore Dynamics si basa su strumenti Dynamics XRM.
Prerequisiti
Per usare questo connettore con l'autenticazione dell'entità servizio Microsoft Entra, è necessario configurare l'autenticazione da server a server (S2S) in Dataverse o Dynamics. Registrare prima l'utente dell'applicazione (entità servizio) in Microsoft Entra ID. Questa operazione à descritta qui. Durante la registrazione dell'applicazione, sarà necessario creare l'utente in Dataverse o Dynamics e concedere le autorizzazioni. Queste autorizzazioni possono essere concesse direttamente o indirettamente aggiungendo l'utente dell'applicazione a un team a cui sono state concesse le autorizzazioni in Dataverse o Dynamics. Per altre informazioni su come configurare un utente dell'applicazione per l'autenticazione con Dataverse, vedere qui.
Operazioni preliminari
Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
Creare un servizio collegato a Dynamics 365 (Microsoft Dataverse) o Dynamics CRM usando l'interfaccia utente
Usare la procedura seguente per creare un servizio collegato a Dynamics 365 nell'interfaccia utente del portale di Azure.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare Dynamics o Dataverse e selezionare il connettore Dynamics 365 (Microsoft Dataverse) o Dynamics CRM.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione del connettore
Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità specifiche di Dynamics.
Proprietà del servizio collegato
Per il servizio collegato di Dynamics sono supportate le proprietà seguenti.
Dynamics 365 e Dynamics CRM online
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà "type" deve essere impostata su "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps". | Sì |
deploymentType | Il tipo di distribuzione dell'istanza di Dynamics. Il valore deve essere "Online" per Dynamics online. | Sì |
serviceUri | URL del servizio dell'istanza di Dynamics, lo stesso a cui si accede dal browser. Un esempio è "https://<organization-name>.crm[x].dynamics.com". | Sì |
authenticationType | Il tipo di autenticazione per la connessione a un server Dynamics. I valori validi sono "AADServicePrincipal", "Office365" e "ManagedIdentity". | Sì |
servicePrincipalId | L'ID client dell'applicazione Microsoft Entra. | Sì quando l'autenticazione è "AADServicePrincipal" |
servicePrincipalCredentialType | Il tipo di credenziale da usare per l'autenticazione service-principal. I valori consentiti sono "ServicePrincipalKey" e "ServicePrincipalCert". Nota: è consigliabile usare ServicePrincipalKey. Esiste una limitazione nota per il tipo di credenziale ServicePrincipalCert in cui il servizio potrebbe riscontrare un problema temporaneo di mancato recupero del segreto dall'insieme di credenziali delle chiavi. |
Sì quando l'autenticazione è "AADServicePrincipal" |
servicePrincipalCredential | La credenziale service-principal. Quando si usa "ServicePrincipalKey" come tipo di credenziale, servicePrincipalCredential può essere una stringa crittografata dal servizio durante la distribuzione del servizio collegato. In alternativa, può essere un riferimento a un segreto in Azure Key Vault. Quando si usa "ServicePrincipalCert" come credenziale, servicePrincipalCredential deve fare riferimento a un certificato in Azure Key Vault e accertarsi che il tipo di contenuto del certificato sia PKCS #12. |
Sì quando l'autenticazione è "AADServicePrincipal" |
username | Il nome utente per connettersi a Dynamics. | Sì quando l'autenticazione è "Office365" |
password | La password per l'account utente specificato come nome utente. Contrassegnare questo campo come "SecureString" per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in Azure Key Vault. | Sì quando l'autenticazione è "Office365" |
credentials | Specificare l'identità gestita assegnata dall'utente come oggetto credenziale. Creare una o più identità gestite assegnate dall'utente, assegnarle al data factory e creare credenziali per ogni identità gestita assegnata dall'utente. |
Sì quando l'autenticazione è "ManagedIdentity" |
connectVia | Runtime di integrazione da usare per la connessione all'archivio dati. Se non viene specificato alcun valore, la proprietà usa Azure Integration Runtime predefinito. | No |
Nota
Il connettore Dynamics precedentemente usava la proprietà organizationName facoltativa per identificare l'istanza di CRM o Dynamics 365 online. Anche se tale proprietà funziona ancora, è preferibile specificare la nuova proprietà serviceUri per ottenere prestazioni migliori per l'individuazione dell'istanza.
Esempio: Dynamics online che usa l'entità servizio Microsoft Entra o l'autenticazione tramite chiave
{
"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"
}
}
}
Esempio: Dynamics online che usa l'entità servizio Microsoft Entra o l'autenticazione tramite certificato
{
"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"
}
}
}
Esempio: Dynamics online che usa l'autenticazione di 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"
}
}
}
Esempio: Dynamics online che usa l'autenticazione tramite identità gestita assegnata dall'utente
{
"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 e Dynamics CRM locale con IFD
Proprietà aggiuntive rispetto a Dynamics online sono hostName e port.
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà "type" deve essere impostata su "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps". | Sì |
deploymentType | Il tipo di distribuzione dell'istanza di Dynamics. Il valore deve essere "OnPremisesWithIfd" per Dynamics locale con IFD. | Sì |
hostName | Nome host del server Dynamics locale. | Sì |
port | Porta del server Dynamics locale. | No. Il valore predefinito è 443. |
organizationName | Il nome organizzazione dell'istanza di Dynamics. | Sì |
authenticationType | Tipo di autenticazione per la connessione al server Dynamics. Specificare "ActiveDirectoryAuthentication" per Dynamics locale con IFD. | Sì |
dominio | Dominio di Active Directory che verificherà le credenziali utente. | Sì |
username | Il nome utente per connettersi a Dynamics. | Sì |
password | Specificare la password per l'account utente specificato per il nome utente. È possibile contrassegnare questo campo come "SecureString" per archiviarlo in modo sicuro. In alternativa, è possibile archiviare la password in Key Vault e consentire all'attività Copy di eseguirne il pull da tale posizione quando si esegue una copia di dati. Per altre informazioni, vedere Archiviare le credenziali nell'insieme di credenziali delle chiavi. | Sì |
connectVia | Runtime di integrazione da usare per la connessione all'archivio dati. Se non viene specificato alcun valore, la proprietà usa Azure Integration Runtime predefinito. | No |
Nota
A causa del ritiro del tipo di autenticazione Ifd entro il 31 agosto 2024, eseguire l'aggiornamento al tipo di autenticazione di Active Directory prima della data se è attualmente in uso.
Esempio: Dynamics locale con IFD usando l'autenticazione di 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"
}
}
}
Proprietà del set di dati
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati. Questa sezione presenta un elenco delle proprietà supportate dal set di dati Dynamics.
Per copiare dati da/in Dynamics, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà "type" del set di dati deve essere impostata su "DynamicsEntity", "DynamicsCrmEntity" o "CommonDataServiceForAppsEntity". | Sì |
entityName | Il nome logico dell'entità da recuperare. | No per l'origine se l'origine dell'attività è specificata come "query", sì per il sink |
Esempio
{
"name": "DynamicsDataset",
"properties": {
"type": "DynamicsEntity",
"schema": [],
"typeProperties": {
"entityName": "account"
},
"linkedServiceName": {
"referenceName": "<Dynamics linked service name>",
"type": "linkedservicereference"
}
}
}
Proprietà dell'attività di copia
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dai tipi di origine e di sink Dynamics.
Dynamics come tipo di origine
Per copiare dati da Dynamics, la sezione source dell'attività Copy supporta le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà "type" dell'origine dell'attività Copy deve essere impostata su "DynamicsSource", "DynamicsCrmSource" o "CommonDataServiceForAppsSource". | Sì |
query | FetchXML è un linguaggio di query proprietario usato in Dynamics online e locale. Vedi l'esempio seguente. Per altre informazioni, vedere Creare query con FetchXML. | No se è specificato entityName nel set di dati |
Nota
La colonna della chiave primaria verrà sempre copiata anche se la proiezione della colonna configurata nella query FetchXML non la contiene.
Importante
- Quando si copiano dati da Dynamics, il mapping esplicito delle colonne da Dynamics al sink è facoltativo. È consigliabile, tuttavia, eseguire il mapping per garantire un risultato di copia deterministico.
- Quando il servizio importa uno schema nell'interfaccia utente di creazione, inferisce lo schema. A tale scopo, campiona le prime righe dal risultato della query Dynamics per inizializzare l'elenco di colonne di origine. In tal caso, le colonne senza valori nelle prime righe vengono omesse. Lo stesso comportamento si applica anche all'anteprima dei dati e alle esecuzioni di copie in assenza di un mapping esplicito. È possibile rivedere e aggiungere altre colonne nel mapping che vengono rispettate durante il runtime di copia.
Esempio
"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>"
}
}
}
]
Esempio di query 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 come tipo di sink
Per copiare dati da Dynamics, la sezione sink dell'attività Copy supporta le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà "type" del sink dell'attività Copy deve essere impostata su "DynamicsSink", "DynamicsCrmSink" o "CommonDataServiceForAppsSink". | Sì. |
writeBehavior | Comportamento dell'azione di scrittura dell'operazione. Il valore deve essere "Upsert". | Sì |
alternateKeyName | Il nome della chiave alternativa definito nell'entità per eseguire l'operazione di upsert. | No. |
writeBatchSize | Conteggio delle righe di dati scritti da Dynamics in ogni batch. | No. Il valore predefinito è 10. |
ignoreNullValues | Indica se ignorare valori null dai dati di input diversi dai campi chiave durante un'operazione di scrittura. I valori validi sono TRUE e FALSE:
|
No. Il valore predefinito è FALSE. |
maxConcurrentConnections | Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. | No |
Nota
Il valore predefinito per il sink writeBatchSize e l'attività Copy parallelCopies per il sink Dynamics è 10 in entrambi i casi. Pertanto, a Dynamics vengono inviati simultaneamente 100 record.
Per Dynamics 365 online, è previsto un limite di 52 chiamate batch simultanee per organizzazione. Se tale limite viene superato, viene generata un'eccezione "Server occupato" prima che venga eseguita la prima richiesta. Mantenere writeBatchSize a 10 o a un valore inferiore per evitare tale limitazione delle chiamate simultanee.
La combinazione ottimale di writeBatchSize e parallelCopies dipende dallo schema dell'entità. Gli elementi dello schema includono il numero di colonne, le dimensioni delle righe e il numero di plug-in, flussi di lavoro o attività del flusso di lavoro associate a tali chiamate. L'impostazione predefinita di writeBatchSize (10) × parallelCopies (10) è quella consigliata in base al servizio Dynamics. Questo valore funziona per la maggior parte delle entità Dynamics, anche se potrebbe non offrire prestazioni ottimali. È possibile ottimizzare le prestazioni regolando la combinazione nelle impostazioni di attività di copia.
Esempio
"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
}
}
}
]
Recupero di dati dalle visualizzazioni
Per recuperare dati da visualizzazioni Dynamics, è necessario ottenere la query salvata della visualizzazione e usare la query per ottenere i dati.
Esistono due entità che archiviano diversi tipi di visualizzazione: "query salvata" archivia la visualizzazione di sistema e "query utente" archivia la visualizzazione utente. Per ottenere le informazioni delle visualizzazioni, fare riferimento alla query FetchXML seguente e sostituire "TARGETENTITY" con savedquery
o userquery
. Ogni tipo di entità ha più attributi disponibili che è possibile aggiungere alla query in base alle esigenze. Altre informazioni sull'entità savedquery e sull'entità userquery.
<fetch top="5000" >
<entity name="<TARGETENTITY>">
<attribute name="name" />
<attribute name="fetchxml" />
<attribute name="returnedtypecode" />
<attribute name="querytype" />
</entity>
</fetch>
È anche possibile aggiungere filtri per filtrare le visualizzazioni. Ad esempio, aggiungere il filtro seguente per ottenere una visualizzazione denominata "My Active Accounts" nell'entità account.
<filter type="and" >
<condition attribute="returnedtypecode" operator="eq" value="1" />
<condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>
Mapping dei tipi di dati per Dynamics
Quando si copiano dati da Dynamics, la tabella seguente mostra i mapping da tipi di dati Dynamics a tipi di dati provvisori all'interno del servizio. Per informazioni sul modo in cui l'attività Copy esegue il mapping a uno schema di origine e il tipo di dati esegue il mapping a un sink, vedere Mapping dello schema e del tipo di dati.
Configurare il tipo di dati provvisorio corrispondente in una struttura del set di dati basata sul tipo di dati Dynamics di origine usando la tabella di mapping seguente:
Tipo di dati di Dynamics | Tipo di dati provvisorio del servizio | Supportato come origine | Supportato come sink |
---|---|---|---|
AttributeTypeCode.BigInt | Lungo | ✓ | ✓ |
AttributeTypeCode.Boolean | Booleano | ✓ | ✓ |
AttributeType.Customer | GUID | ✓ | ✓ (vedere le indicazioni) |
AttributeType.DateTime | Datetime | ✓ | ✓ |
AttributeType.Decimal | Decimale | ✓ | ✓ |
AttributeType.Double | Double | ✓ | ✓ |
AttributeType.EntityName | String | ✓ | ✓ |
AttributeType.Integer | Int32 | ✓ | ✓ |
AttributeType.Lookup | GUID | ✓ | ✓ (vedere le indicazioni) |
AttributeType.ManagedProperty | Booleano | ✓ | |
AttributeType.Memo | String | ✓ | ✓ |
AttributeType.Money | Decimale | ✓ | ✓ |
AttributeType.Owner | GUID | ✓ | ✓ (vedere le indicazioni) |
AttributeType.Picklist | Int32 | ✓ | ✓ |
AttributeType.Uniqueidentifier | GUID | ✓ | ✓ |
AttributeType.String | String | ✓ | ✓ |
AttributeType.State | Int32 | ✓ | ✓ |
AttributeType.Status | Int32 | ✓ | ✓ |
Nota
Non sono supportati i tipi di dati Dynamics AttributeType.CalendarRules, AttributeType.MultiSelectPicklist e AttributeType.PartyList.
Scrittura di dati in un campo di ricerca
Per scrivere dati in un campo di ricerca con più destinazioni, ad esempio Customer e Owner, seguire le indicazioni e l'esempio riportati di seguito:
Impostare l'origine in modo che contenga sia il valore del campo che il nome dell'entità di destinazione corrispondente.
- Se tutti i record eseguono il mapping alla stessa entità di destinazione, verificare una delle condizioni seguenti:
- I dati di origine hanno una colonna che archivia il nome dell'entità di destinazione.
- È stata aggiunta una colonna aggiuntiva nell'origine dell'attività Copy per definire l'entità di destinazione.
- Se record diversi eseguono il mapping a entità di destinazione diverse, accertarsi che i dati di origine includano una colonna che archivia il nome dell'entità di destinazione corrispondente.
- Se tutti i record eseguono il mapping alla stessa entità di destinazione, verificare una delle condizioni seguenti:
Eseguire il mapping sia del valore che delle colonne di riferimento entità dall'origine al sink. È necessario eseguire il mapping della colonna di riferimento entità a una colonna virtuale con il modello di denominazione speciale
{lookup_field_name}@EntityReference
. La colonna non esiste effettivamente in Dynamics. Viene usata per indicare che questa colonna è la colonna di metadati del campo di ricerca multitarget specificato.
Impostazione del campo Proprietario
Quando si imposta il campo Proprietario in Dynamics 365 (Microsoft Dataverse) o Dynamics CRM, è importante fornire un riferimento valido. Le opzioni valide per sono @EntityReference
:
systemuser
: si riferisce a un singolo utente all'interno del sistema.team
: si riferisce a un team di utenti all'interno dell'organizzazione.
Assicurarsi che il valore fornito corrisponda a una di queste opzioni per evitare errori durante la trasformazione dei dati.
Si supponga, ad esempio, che l'origine includa queste due colonne:
- Colonna CustomerField di tipo GUID, che è il valore della chiave primaria dell'entità di destinazione in Dynamics.
- Colonna Target di tipo String, che è il nome logico dell'entità di destinazione.
Si supponga, inoltre, di voler copiare tali dati nel campo entità Dynamics sink CustomerField di tipo Customer.
Nel mapping delle colonne dell'attività Copy, eseguire il mapping delle due colonne nel modo seguente:
- CustomerField a CustomerField. Questo mapping è il mapping dei campi normale.
- Target a CustomerField@EntityReference. La colonna sink è una colonna virtuale che rappresenta il riferimento entità. Immettere tali nomi di campo in un mapping, perché non verranno visualizzati importando schemi.
Se tutti i record di origine eseguono il mapping alla stessa entità di destinazione e i dati di origine non contengono il nome dell'entità di destinazione, una scorciatoia è possibile: nell'origine dell'attività Copy aggiungere una colonna aggiuntiva. Assegnare il nome alla nuova colonna usando il modello {lookup_field_name}@EntityReference
, impostare il valore sul nome dell'entità di destinazione, quindi procedere con il mapping delle colonne come di consueto. Se i nomi delle colonne di origine e sink sono identici, è anche possibile ignorare il mapping esplicito delle colonne perché l'attività Copy per impostazione predefinita esegue il mapping delle colonne in base al nome.
Scrittura di dati in un campo di ricerca tramite chiavi alternative
Per scrivere dati in un campo di ricerca usando colonne chiave alternative, seguire le indicazioni e l'esempio riportati di seguito:
Accertarsi che l'origine contenga tutte le colonne chiave di ricerca.
Le colonne chiave alternative devono essere mappate alla colonna con il modello di denominazione speciale
{lookup_field_name}@{alternate_key_column_name}
. La colonna non esiste in Dynamics. Viene usata per indicare che questa colonna viene usata per cercare il record nell'entità di destinazione.Passare alla scheda Mapping nella trasformazione sink dei flussi di dati per mapping. Selezionare la chiave alternativa come colonne di output nel campo di ricerca. Il valore dopo indica le colonne chiave di questa chiave alternativa.
Dopo la selezione, le colonne chiave alternative verranno visualizzate automaticamente in basso.
Eseguire il mapping delle colonne di input a sinistra con le colonne di output.
Nota
Attualmente ciò è supportato solo quando si usa la modalità inline nella trasformazione sink di flussi di dati per mapping.
Proprietà del flusso di dati per mapping
Quando vengono trasformati dati in un flusso di dati per mapping, è possibile leggere da e scrivere in tabelle in Dynamics. Per altre informazioni, vedere la trasformazione origine e la trasformazione sink nei flussi di dati per mapping. È possibile scegliere di usare un set di dati Dynamics o un set di dati inline come tipo di origine e sink.
Trasformazione origine
La tabella seguente elenca le proprietà supportate da Dynamics. È possibile modificare queste proprietà nella scheda Opzioni origine.
Nome | Descrizione | Richiesto | Valori consentiti | Proprietà script del flusso di dati |
---|---|---|---|---|
Nome entità | Il nome logico dell'entità da recuperare. | Sì quando si usa il set di dati inline | - | (solo set di dati inline) entità |
Query | FetchXML è un linguaggio di query proprietario usato in Dynamics online e locale. Vedi l'esempio seguente. Per altre informazioni, vedere Creare query con FetchXML. | No | String | query |
Nota
Se si seleziona Query come tipo di input, non è possibile recuperare il tipo di colonna dalle tabelle. Verrà considerato come stringa per impostazione predefinita.
Esempio di script di origine Dynamics
Quando si usa il set di dati Dynamics come tipo di origine, lo script del flusso di dati associato è:
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
Se si usa un set di dati inline, lo script del flusso di dati associato è:
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
Trasformazione sink
La tabella seguente elenca le proprietà supportate dal sink Dynamics. È possibile modificare queste proprietà nella scheda Opzioni sink.
Nome | Descrizione | Richiesto | Valori consentiti | Proprietà script del flusso di dati |
---|---|---|---|---|
Nome chiave alternativa | Il nome chiave alternativa definito nell'entità per eseguire un'operazione di update, upsert o delete. | No | - | alternateKeyName |
Metodo di aggiornamento | Specificare le operazioni consentite nella destinazione del database. Per impostazione predefinita, sono consentiti solo gli inserimenti. Per operazioni di aggiornamento, upsert o eliminazione di righe, è necessaria una trasformazione Altera riga perché i tag siano applicati alle righe per queste azioni. |
Sì | true oppure false |
insertable aggiornabile upsertable deletable |
Nome entità | Il nome logico dell'entità da scrivere. | Sì quando si usa il set di dati inline | - | (solo set di dati inline) entità |
Esempio di script di sink Dynamics
Quando si usa il set di dati Dynamics come tipo di sink, lo script del flusso di dati associato è:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> DynamicsSink
Se si usa un set di dati inline, lo script del flusso di dati associato è:
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
Proprietà dell'attività Lookup
Per informazioni dettagliate sulle proprietà, vedere Attività di ricerca.
Contenuto correlato
Per un elenco di archivi dati supportati dall'attività Copy come origini e sink, vedere Archivi dati supportati.