Copiar e transformar dados no Dynamics 365 (Microsoft Dataverse) ou no Dynamics CRM usando o Azure Data Factory ou o Azure Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
Este artigo descreve como usar uma atividade Cópia em pipelines do Azure Data Factory ou do Azure Synapse para copiar dados de/para o Dynamics 365 (Microsoft Dataverse) ou o Dynamics CRM e usar um fluxo de dados para transformar dados no Dynamics 365 (Microsoft Dataverse) ou no Dynamics CRM. Para saber mais, leia os artigos de introdução do Azure Data Factory e do Azure Synapse Analytics.
Funcionalidades com suporte
Este conector é compatível com as seguintes atividades:
Funcionalidades com suporte | IR |
---|---|
Atividade de cópia (origem/coletor) | ① ② |
Fluxo de dados de mapeamento (origem/coletor) | ① |
Atividade de pesquisa | ① ② |
① Runtime de integração do Azure ② Runtime de integração auto-hospedada
Para obter uma lista de armazenamentos de dados para os quais a atividade Copy dá suporte como origens e coletores, confira a tabela Armazenamentos de dados com suporte.
Observação
Desde novembro de 2020, o Common Data Service foi renomeado para Microsoft Dataverse. Este artigo é atualizado para refletir a terminologia mais recente.
Esse conector do Dynamics dá suporte ao Dynamics das versões 7 a 9 para uso online e local. Mais especificamente:
- A versão 7 é equivalente ao Dynamics CRM 2015.
- A versão 8 é equivalente ao Dynamics CRM 2016 e à versão anterior do Dynamics 365.
- A versão 9 é equivalente à versão mais recente do Dynamics 365.
Veja a tabela a seguir de tipos de autenticação e configurações com suporte para versões e produtos do Dynamics.
Versões do Dynamics | Tipos de autenticação | Exemplos de serviço vinculado |
---|---|---|
Dataverse Dynamics 365 online Dynamics CRM online |
Entidade de serviço do Microsoft Entra Office 365 Identidade gerenciada atribuída pelo usuário |
Autenticação do Dynamics Online e da entidade de serviço do Microsoft Entra ou do Office 365 |
Dynamics 365 local com a IFD (implantação para a Internet) Dynamics CRM 2016 local com IFD Dynamics CRM 2015 local com IFD |
IFD | Dynamics local com a IFD e a autenticação IFD |
Observação
Com a substituição do Serviço de Descoberta regional, o serviço foi atualizado para aproveitar o Serviço de Descoberta global ao usar a Autenticação do Office 365.
Importante
Se seu locatário e usuário estiverem configurados no Microsoft Entra ID para acesso condicional e/ou a Autenticação Multifator for necessária, você não poderá usar o tipo de Autenticação do Office 365. Para essas situações, você deve usar uma autenticação de entidade de serviço do Microsoft Entra.
Para o Dynamics 365 especificamente, os seguintes tipos de aplicativos são compatíveis:
- Dynamics 365 for Sales
- Dynamics 365 for Customer Service
- Dynamics 365 for Field Service
- Dynamics 365 for Project Service Automation
- Dynamics 365 for Marketing
Esse conector não dá suporte a outros tipos de aplicativos, como Finance, Operations e Talent.
Dica
Para copiar dados do Dynamics 365 Finance e Operations, use o conector do Dynamics AX.
Esse conector do Dynamics é criado com base nas ferramentas do Dynamics XRM.
Pré-requisitos
Para usar esse conector com a autenticação de entidade de serviço do Microsoft Entra, você precisará de configurar a autenticação de servidor-para-servidor (S2S) no Dataverse ou no Dynamics. Primeiro, registre o usuário do aplicativo (Entidade de Serviço) no Microsoft Entra ID. Você pode descobrir como fazer isso aqui. Durante o registro do aplicativo, você precisará criar esse usuário no Dataverse ou no Dynamics e conceder permissões. Essas permissões podem ser concedidas direta ou indiretamente adicionando o usuário do aplicativo a uma equipe que recebeu permissões no Dataverse ou no Dynamics. Você pode encontrar mais informações sobre como configurar um usuário do aplicativo para autenticar com o Dataverse aqui.
Introdução
Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:
- A ferramenta Copiar Dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- PowerShell do Azure
- A API REST
- O modelo do Azure Resource Manager
Criar um serviço vinculado para o Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado Dynamics 365 na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse, selecione Serviços Vinculados e clique em Novo:
Pesquise o Dynamics ou o Dataverse e selecione o conector do Dynamics 365 (Microsoft Dataverse) ou do Dynamics CRM.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes da configuração do conector
As seções que se seguem fornecem detalhes sobre as propriedades que são usadas para definir entidades específicas do Dynamics.
Propriedades do serviço vinculado
As propriedades a seguir têm suporte no serviço vinculado do Dynamics.
Dynamics 365 e Dynamics CRM Online
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type precisa ser definida como "Dynamics", "DynamicsCrm" ou "CommonDataServiceForApps". | Sim |
deploymentType | O tipo de implantação da instância do Dynamics. O valor precisa ser "Online" para o Dynamics Online. | Sim |
serviceUri | A URL de serviço da instância do Dynamics, a mesma que você acessa no navegador. Um exemplo de URL é "https://<organization-name>.crm[x].dynamics.com". | Sim |
authenticationType | O tipo de autenticação para se conectar a um servidor do Dynamics. Os valores válidos são "AADServicePrincipal", "Office365" e "ManagedIdentity". | Sim |
servicePrincipalId | A ID do cliente do aplicativo do Microsoft Entra. | Sim, quando a autenticação for "AADServicePrincipal" |
servicePrincipalCredentialType | O tipo de credencial a ser usado para a autenticação da entidade de serviço. Os valores válidos são "ServicePrincipalKey" e "ServicePrincipalCert". Observação: é recomendável usar a ServicePrincipalKey. Há uma limitação conhecida no tipo de credencial ServicePrincipalCert em que o serviço pode encontrar um problema transitório de falha ao recuperar o segredo do cofre de chaves. |
Sim, quando a autenticação for "AADServicePrincipal" |
servicePrincipalCredential | A credencial da entidade de serviço. Quando você usa "ServicePrincipalKey" como o tipo de credencial, servicePrincipalCredential pode ser uma cadeia de caracteres que o serviço criptografa na implantação do serviço vinculado. Ou, então, pode ser uma referência a um segredo no Azure Key Vault. Ao usar "ServicePrincipalCert" como credencial, servicePrincipalCredential tem que ser uma referência a um certificado no Azure Key Vault e verifique se o tipo de conteúdo do certificado é PKCS nº 12. |
Sim, quando a autenticação for "AADServicePrincipal" |
Nome de Usuário | O nome de usuário para conexão com o Dynamics. | Sim, quando a autenticação for "Office365" |
password | A senha da conta de usuário que você especificou como o nome de usuário. Marque este campo como “SecureString” para armazená-lo com segurança ou referencie um segredo armazenado no Azure Key Vault. | Sim, quando a autenticação for "Office365" |
credenciais | Especifique a identidade gerenciada atribuída pelo usuário como o objeto da credencial. Atribua uma ou várias identidades gerenciadas atribuídas pelo usuário ao data factory e crie credenciais para cada identidade gerenciada atribuída pelo usuário. |
Sim quando a autenticação é "ManagedIdentity" |
connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Se nenhum valor for especificado, a propriedade usará o runtime de integração padrão do Azure. | Não |
Observação
O conector do Dynamics anteriormente usava a propriedade organizationName opcional para identificar sua instância do Dynamics CRM ou do Dynamics 365 Online. Embora essa propriedade ainda funcione, sugerimos que você especifique a nova propriedade serviceUri em vez daquela, a fim de obter um melhor desempenho na descoberta da instância.
Exemplo: Dynamics Online usando a entidade de serviço do Microsoft Entra e a autenticação por chave
{
"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"
}
}
}
Exemplo: Dynamics Online usando a entidade de serviço do Microsoft Entra e a autenticação de certificado
{
"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"
}
}
}
Exemplo: Dynamics Online usando a autenticação do 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"
}
}
}
Exemplo: usar a autenticação de identidade gerenciada atribuída pelo usuário
{
"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 local com IFD
Propriedades adicionais que se comparam com o Dynamics Online são hostName e port.
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type precisa ser definida como "Dynamics", "DynamicsCrm" ou "CommonDataServiceForApps". | Sim |
deploymentType | O tipo de implantação da instância do Dynamics. O valor precisa ser "OnPremisesWithIfd" para o Dynamics local com IFD. | Sim |
hostName | O nome do host do servidor do Dynamics local. | Sim |
porta | O nome da porta do servidor do Dynamics local. | Não. O valor padrão é 443. |
organizationName | O nome da organização da instância do Dynamics. | Sim |
authenticationType | O tipo de autenticação para se conectar ao servidor do Dynamics. Especifique "ActiveDirectoryAuthentication" para Dynamics local com IFD. | Sim |
domínio | O domínio do Active Directory que verificará as credenciais do usuário. | Sim |
Nome de Usuário | O nome de usuário para conexão com o Dynamics. | Sim |
password | A senha da conta de usuário que você especificou para o nome de usuário. Marque esse campo como “SecureString” para armazená-lo com segurança. Ou, então, armazene uma senha no Key Vault e deixe a atividade Copy efetuar pull nele quando ela fizer a cópia de dados. Saiba mais sobre Armazenar credenciais no Cofre de Chaves. | Sim |
connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Se nenhum valor for especificado, a propriedade usará o runtime de integração padrão do Azure. | Não |
Observação
Devido à desativação do tipo de autenticação Ifd em 31 de agosto de 2024, atualize para o tipo de autenticação do Active Directory antes da data, se você estiver usando-o atualmente.
Exemplo: Dynamics on-premises com IFD usando autenticação do 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"
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados do Dynamics.
Para copiar dados bidirecionalmente no Dynamics, há suporte para as seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type do conjunto de dados precisa ser definida como "DynamicsEntity", "DynamicsCrmEntity" ou "CommonDataServiceForAppsEntity". | Sim |
entityName | O nome lógico da entidade a ser recuperada. | Não para a origem se a origem da atividade for especificada como "consulta" e sim para o coletor |
Exemplo
{
"name": "DynamicsDataset",
"properties": {
"type": "DynamicsEntity",
"schema": [],
"typeProperties": {
"entityName": "account"
},
"linkedServiceName": {
"referenceName": "<Dynamics linked service name>",
"type": "linkedservicereference"
}
}
}
Propriedades da atividade de cópia
Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela fonte e tipos de coletor do Dynamics.
Dynamics como um tipo de fonte
Para copiar dados do Dynamics, a seção de origem da atividade Copy dá suporte às seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type da origem da atividade Copy precisa se definida como "DynamicsSource", "DynamicsCrmSource" ou "CommonDataServiceForAppsSource". | Sim |
Consulta | FetchXML é uma linguagem de consulta proprietária usada no Dynamics online e local. Veja o exemplo a seguir. Para obter mais informações, confira Criar consultas com FetchXML. | Não, se entityName no conjunto de dados for especificado |
Observação
A coluna PK sempre será copiada, mesmo que ela não esteja contida na projeção da coluna que você configurar na consulta FetchXML.
Importante
- Quando você copia dados do Dynamics, o mapeamento de coluna explícito do Dynamics para o coletor é opcional. Porém, recomendamos expressamente fazer o mapeamento para garantir um resultado de cópia determinístico.
- Quando o serviço importa um esquema na interface do usuário de criação, ele o infere. Ele faz isso por meio da amostragem das principais linhas do resultado da consulta do Dynamics para inicializar a lista de colunas de origem. Nesse caso, as colunas sem valores nas linhas superiores são omitidas. O mesmo comportamento também se aplica à pré-visualização de dados e execuções de cópia se não há o mapeamento explícito. Você pode examinar e adicionar mais colunas ao mapeamento, que são respeitadas durante o runtime da cópia.
Exemplo
"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>"
}
}
}
]
Exemplo de consulta 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 como um tipo de coletor
Para copiar dados para o Dynamics, a seção de coletor da atividade Copy dá suporte às seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type da atividade Copy precisa ser definida como "DynamicsSink", "DynamicsCrmSink" ou "CommonDataServiceForAppsSink". | Sim. |
writeBehavior | O comportamento da operação de gravação. O valor precisa ser "Upsert". | Sim |
alternateKeyName | O nome da chave alternativa definido na entidade para executar um upsert. | Não. |
writeBatchSize | A contagem de linhas de dados gravados no Dynamics em cada lote. | Não. O valor padrão é 10. |
ignoreNullValues | Indica se os valores nulos dos dados de entrada devem ser ignorados, além dos campos de chave, durante uma operação de gravação. Os valores válidos são TRUE e FALSE:
|
Não. O valor padrão é FALSE. |
maxConcurrentConnections | O limite superior de conexões simultâneas estabelecidas com o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas. | No |
Observação
O valor padrão de writeBatchSize do coletor e da atividade Copy parallelCopies do coletor do Dynamics é 10. Portanto, por padrão, 100 registros são enviados simultaneamente ao Dynamics.
Para o Dynamics 365 online, há um limite de 52 chamadas simultâneas de lote por organização. Se esse limite for excedido, uma falha de "Servidor Ocupado" será gerada antes que a primeira solicitação seja executada. Mantenha writeBatchSize em 10 ou menos para evitar essa limitação de chamadas simultâneas.
A combinação ideal de writeBatchSize e parallelCopies depende do esquema da entidade. Os elementos de esquema incluem o número de colunas, o tamanho da linha e o número de plug-ins, os fluxos de trabalho ou as atividades de fluxo de trabalho conectadas a essas chamadas. A configuração padrão de writeBatchSize (10) × parallelCopies (10 é a recomendação de acordo com o serviço do Dynamics. Esse valor funciona para a maioria das entidades do Dynamics, embora possa não fornecer o melhor desempenho. Você pode ajustar o desempenho ajustando a combinação em suas configurações de atividade de cópia.
Exemplo
"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
}
}
}
]
Como recuperar dados de exibições
Para recuperar dados de exibições do Dynamics, você precisará obter a consulta salva da exibição e usar a consulta para obter os dados.
Há duas entidades que armazenam diferentes tipos de exibição: a "consulta salva" armazena a exibição do sistema e a "consulta do usuário" armazena a exibição do usuário. Para obter as informações das exibições, veja a consulta FetchXML a seguir e substitua "TARGETENTITY" por savedquery
ou userquery
. Cada tipo de entidade tem mais atributos disponíveis que você poderá adicionar à consulta de acordo com suas necessidades. Saiba mais sobre entidade savedquery e a entidade userquery.
<fetch top="5000" >
<entity name="<TARGETENTITY>">
<attribute name="name" />
<attribute name="fetchxml" />
<attribute name="returnedtypecode" />
<attribute name="querytype" />
</entity>
</fetch>
Você também pode adicionar filtros para filtrar as exibições. Por exemplo, adicione o filtro a seguir para obter uma exibição chamada "Minhas Contas Ativas" na entidade de conta.
<filter type="and" >
<condition attribute="returnedtypecode" operator="eq" value="1" />
<condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>
Mapeamento de tipo de dados para Dynamics
Durante a cópia de dados do Dynamics, a tabela a seguir mostra os mapeamentos dos tipos de dados do Dynamics para os tipos de dados provisórios no serviço. Para saber como a atividade Copy é mapeada para um esquema de origem e um tipo de dados é mapeado para um coletor, confira Mapeamentos de tipo de dados e esquema.
Configure o tipo de dados provisórios correspondente em uma estrutura de conjunto de dados com base no tipo de dados de origem do Dynamics usando a seguinte tabela de mapeamento:
Tipo de dados do Dynamics | Tipo de dados provisório do serviço | Tem suporte como origem | Tem suporte como coletor |
---|---|---|---|
AttributeTypeCode.BigInt | long | ✓ | ✓ |
AttributeTypeCode.Boolean | Boolean | ✓ | ✓ |
AttributeType.Customer | GUID | ✓ | ✓ (Confira as diretrizes) |
AttributeType.DateTime | Datetime | ✓ | ✓ |
AttributeType.Decimal | Decimal | ✓ | ✓ |
AttributeType.Double | Double | ✓ | ✓ |
AttributeType.EntityName | String | ✓ | ✓ |
AttributeType.Integer | Int32 | ✓ | ✓ |
AttributeType.Lookup | GUID | ✓ | ✓ (Confira as diretrizes) |
AttributeType.ManagedProperty | Boolean | ✓ | |
AttributeType.Memo | String | ✓ | ✓ |
AttributeType.Money | Decimal | ✓ | ✓ |
AttributeType.Owner | GUID | ✓ | ✓ (Confira as diretrizes) |
AttributeType.Picklist | Int32 | ✓ | ✓ |
AttributeType.Uniqueidentifier | GUID | ✓ | ✓ |
AttributeType.String | String | ✓ | ✓ |
AttributeType.State | Int32 | ✓ | ✓ |
AttributeType.Status | Int32 | ✓ | ✓ |
Observação
Não há suporte para os tipos de dados AttributeType.CalendarRules, AttributeType.MultiSelectPicklist e AttributeType.PartyList do Dynamics.
Como gravar dados em um campo de pesquisa
Para gravar dados em um campo de pesquisa com vários destinos, como Cliente e Proprietário, siga estas diretrizes e o exemplo:
Faça com que a fonte contenha o valor do campo e o nome da entidade de destino correspondente.
- Se todos os registros forem mapeados para a mesma entidade de destino, garanta uma das seguintes condições:
- Os dados de origem têm uma coluna que armazena o nome da entidade de destino.
- Você adicionou uma coluna extra na origem da atividade Copy para definir a entidade de destino.
- Se diferentes registros forem mapeados para diferentes entidades de destino, verifique se os dados de origem têm uma coluna que armazena o nome da entidade de destino correspondente.
- Se todos os registros forem mapeados para a mesma entidade de destino, garanta uma das seguintes condições:
Mapeie as colunas de valor e de referência da entidade da origem para o coletor. A coluna da entidade de referência precisa ser mapeada para uma coluna virtual com o padrão de nomenclatura especial
{lookup_field_name}@EntityReference
. Na verdade, a coluna não existe no Dynamics. Ela é usada para indicar que essa coluna é a coluna de metadados do campo de pesquisa de vários destinos fornecido.
Definindo o campo Proprietário
Ao definir o campo Proprietário no Dynamics 365 (Microsoft Dataverse) ou no Dynamics CRM, é importante fornecer uma referência válida. As opções válidas para o @EntityReference
são:
systemuser
: Isso se refere a um usuário individual dentro do sistema.team
: Isso se refere a uma equipe de usuários dentro da organização.
Certifique-se de que o valor fornecido corresponde a uma dessas opções para evitar erros durante a transformação de dados.
Por exemplo, suponha que a origem tenha estas duas colunas:
- A coluna CustomerField do tipo GUID, que é o valor da chave primária da entidade de destino no Dynamics.
- A coluna Target do tipo String, que é o nome lógico da entidade de destino.
Além disso, suponha que você deseje copiar esses dados para o campo de entidade CustomerField do coletor do Dynamics do tipo Customer.
No mapeamento de coluna da atividade de cópia, mapeie as duas colunas da seguinte maneira:
- CustomerField para CustomerField. Esse mapeamento é o mapeamento de campo normal.
- Target para CustomerField@EntityReference. A coluna do coletor é uma coluna virtual que representa a referência de entidade. Insira esses nomes de campo em um mapeamento, pois eles não serão exibidos pela importação de esquemas.
Se todos os seus registros de origem forem mapeados para a mesma entidade de destino e os dados de origem não contiverem o nome da entidade de destino, use este atalho: na origem da atividade Copy, adicione uma coluna extra. Nomeie a nova coluna usando o padrão {lookup_field_name}@EntityReference
, defina o valor com o nome da entidade de destino e continue com o mapeamento de coluna como de costume. Se os nomes de coluna de origem e do coletor forem idênticos, você também poderá ignorar o mapeamento de coluna explícito, pois a atividade Copy, por padrão, mapeia as colunas por nome.
Gravar dados em um campo de pesquisa por meio de chaves alternativas
Para gravar dados em um campo de pesquisa usando colunas de chaves alternativas, siga estas diretrizes e exemplos:
Verifique se a fonte contém todas as colunas de chaves de pesquisa.
As colunas de chaves alternativas devem ser mapeadas para a coluna com o padrão de nomenclatura especial
{lookup_field_name}@{alternate_key_column_name}
. A coluna não existe no Dynamics. Ele é usado para indicar que a coluna é usada para pesquisar o registro na entidade de destino.Acesse a guia Mapeamento na transformação do coletor de fluxos de dados de mapeamento. Selecione a chave alternativa como colunas de saída no campo de pesquisa. O valor posterior indica as colunas de chaves dessa chave alternativa.
Depois de selecionadas, as colunas de chaves alternativas serão exibidas automaticamente abaixo.
Mapeie suas colunas de entrada à esquerda com as colunas de saída.
Observação
Atualmente, só há suporte para isso quando você usa o modo embutido na transformação do coletor de fluxos de dados de mapeamento.
Mapeamento de propriedades de fluxo de dados
Ao transformar dados no fluxo de dados de mapeamento, é possível ler e gravar em tabelas no Dynamics. Para obter mais informações, confira transformação de origem e transformação do coletor nos fluxos de dados de mapeamento. Você pode optar por usar um conjunto de dados do Dynamics ou um conjunto de dados embutido como origem e tipo de coletor.
Transformação de origem
A tabela abaixo lista as propriedades com suporte do Dynamics. Você pode editar essas propriedades na guia Opções de origem.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script do Fluxo de Dados |
---|---|---|---|---|
Nome da entidade | O nome lógico da entidade a ser recuperada. | Sim, quando usar o conjunto de dados embutido | - | (somente para o conjuntos de dados em linha) entidade |
Consulta | FetchXML é uma linguagem de consulta proprietária usada no Dynamics online e local. Veja o exemplo a seguir. Para obter mais informações, confira Criar consultas com FetchXML. | Não | String | Consulta |
Observação
Se você selecionar Consulta como tipo de entrada, o tipo de coluna de tabelas não poderá ser recuperado. Ele será tratado como uma cadeia de caracteres por padrão.
Exemplo de script de origem do Dynamics
Quando você usa o conjunto de dados do Dynamics como tipo de origem, o script de fluxo de dados associado é:
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 você usar um conjuntos de dados embutido, o script de fluxo de dados associado será:
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
Transformação de coletor
A tabela abaixo lista as propriedades compatíveis com o coletor do Dynamics. Você pode editar essas propriedades na guia Opções do coletor.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script do Fluxo de Dados |
---|---|---|---|---|
Nome da chave alternativa | O nome da chave alternativa definido na entidade para executar atualização, upsert ou exclusão. | Não | - | alternateKeyName |
Método Update | Especifique quais operações são permitidas no destino do banco de dados. O padrão é permitir apenas inserções. Para atualizar, fazer upsert ou excluir linhas, uma transformação Alter row é necessária para marcar as linhas para essas ações. |
Sim | true ou false |
insertable updateable upsertable deletable |
Nome da entidade | O nome lógico da entidade a ser gravada. | Sim, quando usar o conjunto de dados embutido | - | (somente para o conjuntos de dados em linha) entidade |
Exemplo de script de coletor do Dynamics
Quando você usa o conjunto de dados do Dynamics como tipo de coletor, o script de fluxo de dados associado é:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> DynamicsSink
Se você usar um conjuntos de dados embutido, o script de fluxo de dados associado será:
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
Pesquisar propriedades de atividade
Para saber mais detalhes sobre as propriedades, confira Atividade de pesquisa.
Conteúdo relacionado
Para obter uma lista de armazenamentos de dados que a atividade Copy suporta, como fontes e coletores, consulte Armazenamentos de dados com suporte.