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

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo descreve como usar uma atividade de cópia no Azure Data Factory ou pipelines Synapse para copiar dados de e para o Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM e usar um fluxo de dados para transformar dados no Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM. Para saber mais, leia os artigos de introdução do Azure Data Factory e do Azure Synapse Analytics.

Capacidades suportadas

Este conector é suportado para as seguintes atividades:

Capacidades suportadas IR
Atividade de cópia (origem/coletor) ① ②
Mapeando o fluxo de dados (origem/coletor)
Atividade de Pesquisa ① ②

(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado

Para obter uma lista de armazenamentos de dados que uma atividade de cópia suporta como fontes e coletores, consulte a tabela Armazenamentos de dados suportados.

Nota

A partir de novembro de 2020, o Common Data Service foi renomeado para Microsoft Dataverse. Este artigo é atualizado para refletir a terminologia mais recente.

Este conector do Dynamics suporta as versões 7 a 9 do Dynamics para online e no local. Mais especificamente:

  • A versão 7 mapeia para o Dynamics CRM 2015.
  • A versão 8 mapeia para o Dynamics CRM 2016 e a versão anterior do Dynamics 365.
  • A versão 9 é mapeada para a versão posterior do Dynamics 365.

Consulte a tabela a seguir de tipos e configurações de autenticação suportados para versões e produtos do Dynamics.

Versões dinâmicas Tipos de autenticação Exemplos de serviço vinculado
Versículo de dados

Dynamics 365 online

Dynamics CRM Online
Entidade de serviço Microsoft Entra

Escritório 365

Identidade gerida atribuída pelo utilizador
Dynamics online e entidade de serviço do Microsoft Entra ou autenticação do Office 365
Dynamics 365 local com implantação voltada para a Internet (IFD)

Dynamics CRM 2016 local com IFD

Dynamics CRM 2015 local com IFD
IFD Dynamics on-premises com autenticação IFD e IFD

Nota

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 o seu inquilino e utilizador estiver configurado no Microsoft Entra ID para acesso condicional e/ou se for necessária a Autenticação Multifator, não poderá utilizar 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 aplicativo são suportados:

  • 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 suporta outros tipos de aplicativos, como Finanças, Operações e Talentos.

Gorjeta

Para copiar dados do Dynamics 365 Finance and Operations, você pode usar o conector do Dynamics AX.

Este 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ê deve configurar a autenticação de servidor para servidor (S2S) em Dataverse ou Dynamics. Primeiro, registre o usuário do aplicativo (Service Principal) 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 de aplicativo para autenticar com o Dataverse aqui.

Introdução

Para executar a atividade Copiar com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:

Criar um serviço vinculado ao Dynamics 365 (Microsoft Dataverse) ou ao Dynamics CRM usando a interface do usuário

Use as etapas a seguir para criar um serviço vinculado ao Dynamics 365 na interface do usuário do portal do Azure.

  1. Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e clique em Novo:

  2. Pesquise Dynamics ou Dataverse e selecione o conector Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM.

    Screenshot of the Dynamics 365 connector.

    Screenshot of the Dataverse connector.

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Screenshot of linked service configuration for Dynamics 365.

Detalhes de configuração do conector

As seções a seguir 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 são suportadas para o serviço vinculado do Dynamics.

Dynamics 365 e Dynamics CRM online

Propriedade Descrição Necessário
tipo A propriedade type deve ser definida como "Dynamics", "DynamicsCrm" ou "CommonDataServiceForApps". Sim
deploymentType O tipo de implantação da instância do Dynamics. O valor deve ser "Online" para Dynamics online. Sim
serviceUri A URL de serviço da sua instância do Dynamics, a mesma que você acessa do navegador. Um exemplo é "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 Microsoft Entra. Sim quando a autenticação é "AADServicePrincipal"
servicePrincipalCredentialType O tipo de credencial a ser usado para autenticação da entidade de serviço. Os valores válidos são "ServicePrincipalKey" e "ServicePrincipalCert".

Nota: É recomendável usar ServicePrincipalKey. Há uma limitação conhecida para o tipo de credencial ServicePrincipalCert em que o serviço pode encontrar um problema transitório de falha na recuperação do segredo do cofre de chaves.
Sim quando a autenticação é "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 pode ser uma referência a um segredo no Cofre de Chaves do Azure.

Quando você usa "ServicePrincipalCert" como credencial, servicePrincipalCredential deve ser uma referência a um certificado no Cofre de Chaves do Azure e garantir que o tipo de conteúdo do certificado seja PKCS #12.
Sim quando a autenticação é "AADServicePrincipal"
nome de utilizador O nome de usuário para se conectar ao Dynamics. Sim quando a autenticação é "Office365"
password A senha para a conta de usuário que você especificou como o nome de usuário. Marque este campo com "SecureString" para armazená-lo com segurança ou faça referência a um segredo armazenado no Cofre de Chaves do Azure. Sim quando a autenticação é "Office365"
credenciais Especifique a identidade gerenciada atribuída pelo usuário como o objeto de credencial.

Crie uma ou várias identidades gerenciadas atribuídas pelo usuário, atribua-as ao seu data factory e crie credenciais para cada identidade gerenciada atribuída pelo usuário.
Sim quando a autenticação é "ManagedIdentity"
ConecteVia O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Se nenhum valor for especificado, a propriedade usará o tempo de execução de integração padrão do Azure. Não

Nota

O conector do Dynamics anteriormente usava a propriedade opcional organizationName para identificar sua instância online do Dynamics CRM ou do Dynamics 365. Enquanto essa propriedade ainda funciona, sugerimos que você especifique a nova propriedade serviceUri para obter um melhor desempenho para a descoberta de exemplo.

Exemplo: Dynamics online usando a entidade de serviço e a autenticação de chave do Microsoft Entra

{  
    "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 e a autenticação de certificado do Microsoft Entra

{ 
    "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: Dynamics online usando 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

As propriedades adicionais que se comparam ao Dynamics online são hostName e port.

Propriedade Descrição Necessário
tipo A propriedade type deve ser definida como "Dynamics", "DynamicsCrm" ou "CommonDataServiceForApps". Sim.
deploymentType O tipo de implantação da instância do Dynamics. O valor deve ser "OnPremisesWithIfd" para Dynamics on-premises com IFD. Sim.
Nome do host O nome do host do servidor Dynamics local. Sim.
porta A porta do servidor Dynamics local. Não O valor padrão é 443.
nome_da_organização 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 "Ifd" para Dynamics on-premises com IFD. Sim.
nome de utilizador O nome de usuário para se conectar ao Dynamics. Sim.
password A senha para a conta de usuário que você especificou para o nome de usuário. Você pode marcar este campo com "SecureString" para armazená-lo com segurança. Ou você pode armazenar uma senha no Cofre de Chaves e permitir que a atividade de cópia seja extraída de lá quando fizer a cópia de dados. Saiba mais em Credenciais da Loja no Cofre de Chaves. Sim.
ConecteVia O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Se nenhum valor for especificado, a propriedade usará o tempo de execução de integração padrão do Azure. Não

Exemplo: Dynamics on-premises com IFD usando autenticação IFD

{
    "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": "Ifd",
            "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 de seções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Conjuntos de dados. Esta seção fornece uma lista de propriedades suportadas pelo conjunto de dados do Dynamics.

Para copiar dados de e para o Dynamics, as seguintes propriedades são suportadas:

Propriedade Descrição Necessário
tipo A propriedade type do conjunto de dados deve ser definida como "DynamicsEntity", "DynamicsCrmEntity" ou "CommonDataServiceForAppsEntity". Sim
nome_da_entidade O nome lógico da entidade a ser recuperada. Não para fonte se a fonte de atividade for especificada como "consulta" e sim para coletor

Exemplo

{
    "name": "DynamicsDataset",
    "properties": {
        "type": "DynamicsEntity",
        "schema": [],
        "typeProperties": {
            "entityName": "account"
        },
        "linkedServiceName": {
            "referenceName": "<Dynamics linked service name>",
            "type": "linkedservicereference"
        }
    }
}

Propriedades da atividade Copy

Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta seção fornece uma lista de propriedades suportadas pelos tipos de fonte e coletor do Dynamics.

Dinâmica como um tipo de origem

Para copiar dados do Dynamics, a seção copiar fonte de atividade suporta as seguintes propriedades:

Propriedade Descrição Necessário
tipo A propriedade type da fonte de atividade de cópia deve ser definida como "DynamicsSource", "DynamicsCrmSource" ou "CommonDataServiceForAppsSource". Sim
query FetchXML é uma linguagem de consulta proprietária que é usada no Dynamics online e local. Veja o seguinte exemplo. Para saber mais, consulte Criar consultas com FetchXML. Não se entityName no conjunto de dados for especificado

Nota

A coluna PK sempre será copiada, mesmo que a projeção de coluna configurada na consulta FetchXML não a contenha.

Importante

  • Quando você copia dados do Dynamics, o mapeamento explícito de colunas do Dynamics para o coletor é opcional. Mas é altamente recomendável o mapeamento para garantir um resultado de cópia determinística.
  • Quando o serviço importa um esquema na interface do usuário de criação, ele infere o esquema. Ele faz isso por amostragem das linhas superiores 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 a visualizações de dados e execuções de cópia se não houver mapeamento explícito. Você pode revisar e adicionar mais colunas ao mapeamento, que são honradas durante o tempo de execução 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>

Dinâmica como um tipo de coletor

Para copiar dados para o Dynamics, a seção do coletor de atividade de cópia suporta as seguintes propriedades:

Propriedade Descrição Necessário
tipo A propriedade type do coletor de atividade de cópia deve ser definida como "DynamicsSink", "DynamicsCrmSink" ou "CommonDataServiceForAppsSink". Sim.
writeBehavior O comportamento de gravação da operação. O valor deve ser "Upsert". Sim
alternateKeyName O nome de chave alternativo definido em sua entidade para fazer um upsert. Não
writeBatchSize A contagem de linhas de dados gravados no Dynamics em cada lote. Não O valor predefinido é 10.
ignoreNullValues Se os valores nulos devem ser ignorados de dados de entrada diferentes de campos-chave durante uma operação de gravação.

Os valores válidos são TRUE e FALSE:
  • TRUE: Deixe os dados no objeto de destino inalterados quando você fizer uma operação de upsert ou atualização. Insira um valor padrão definido quando você fizer uma operação de inserção.
  • FALSE: Atualize os dados no objeto de destino para um valor nulo quando você fizer uma operação de upsert ou atualização. Insira um valor nulo quando você fizer uma operação de inserção.
Não O valor padrão é FALSE.
maxConcurrentConnections O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. Não

Nota

O valor padrão para o coletor writeBatchSize e a atividade de cópia parallelCopies para o coletor do Dynamics é 10. Portanto, 100 registros são enviados simultaneamente por padrão para o Dynamics.

Para o Dynamics 365 online, há um limite de 52 chamadas em lote simultâneas por organização. Se esse limite for excedido, uma exceção "Servidor ocupado" será lançada 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 sua entidade. Os elementos do esquema incluem o número de colunas, o tamanho da linha e o número de plug-ins, fluxos de trabalho ou atividades de fluxo de trabalho conectados a essas chamadas. A configuração padrão de writeBatchSize (10) × parallelCopies (10) é a recomendação de acordo com o serviço Dynamics. Esse valor funciona para a maioria das entidades do Dynamics, embora possa não oferecer o melhor desempenho. Você pode ajustar o desempenho ajustando a combinação nas 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
            }
        }
    }
]

Recuperando dados de modos de exibição

Para recuperar dados de modos de exibição do Dynamics, você precisa obter a consulta salva do modo de exibição e usar a consulta para obter os dados.

Existem duas entidades que armazenam diferentes tipos de visualização: "consulta salva" armazena a visualização do sistema e "consulta do usuário" armazena a visualização do usuário. Para obter as informações das exibições, consulte a seguinte consulta FetchXML e substitua "TARGETENTITY" por savedquery ou userquery. Cada tipo de entidade tem mais atributos disponíveis que você pode adicionar à consulta com base em sua necessidade. Saiba mais sobre a 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 seguinte filtro para obter uma exibição chamada "Minhas contas ativas" na entidade da 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

Quando você copia dados do Dynamics, a tabela a seguir mostra mapeamentos de tipos de dados do Dynamics para tipos de dados provisórios dentro do serviço. Para saber como uma atividade de cópia mapeia para um esquema de origem e um tipo de dados mapeia para um coletor, consulte Mapeamentos de esquema e tipo de dados.

Configure o tipo de dados provisório correspondente em uma estrutura de conjunto de dados baseada no tipo de dados do Dynamics de origem usando a seguinte tabela de mapeamento:

Tipo de dados dinâmicos Tipo de dados provisórios de serviço Suportado como fonte Suportado como lavatório
AttributeTypeCode.BigInt Longo
AttributeTypeCode.Boolean Booleano
AttributeType.Customer GUID ✓ (Ver orientações)
AttributeType.DateTime Datetime
AttributeType.Decimal Decimal
AttributeType.Double Duplo
AttributeType.EntityName String
AttributeType.Integer Int32
AttributeType.Lookup GUID ✓ (Ver orientações)
AttributeType.ManagedProperty Booleano
AttributeType.Memo String
AttributeType.Money Decimal
AttributeType.Owner GUID ✓ (Ver orientações)
AttributeType.Picklist Int32
AttributeType.Uniqueidentifier GUID
AttributeType.String String
AttributeType.State Int32
AttributeType.Status Int32

Nota

Os tipos de dados Dynamics AttributeType.CalendarRules, AttributeType.MultiSelectPicklist e AttributeType.PartyList não são suportados.

Gravando 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 orientações e exemplo:

  1. Faça com que sua origem 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, verifique 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 adicional na fonte de atividade de cópia para definir a entidade de destino.
    • Se registros diferentes forem mapeados para entidades de destino diferentes, verifique se os dados de origem têm uma coluna que armazena o nome da entidade de destino correspondente.
  2. Mapeie as colunas de valor e de referência de entidade da origem para o coletor. A coluna de referência de entidade deve ser mapeada para uma coluna virtual com o padrão {lookup_field_name}@EntityReferencede nomenclatura especial. Na verdade, a coluna não existe no Dynamics. É usado para indicar que esta coluna é a coluna de metadados do campo de pesquisa de vários destinos fornecido.

Por exemplo, suponha que a fonte tenha estas duas colunas:

  • Coluna CustomerField do tipo GUID, que é o valor da chave primária da entidade de destino em Dynamics.
  • Coluna de destino do tipo String, que é o nome lógico da entidade de destino.

Suponha também que você deseja copiar esses dados para o campo de entidade do coletor Dynamics CustomerField do tipo Customer.

No mapeamento de coluna de atividade de cópia, mapeie as duas colunas da seguinte maneira:

  • CustomerField para CustomerField. Este mapeamento é o mapeamento de campo normal.
  • Alvo para CustomerField@EntityReference. A coluna do coletor é uma coluna virtual que representa a referência da entidade. Insira esses nomes de campo em um mapeamento, pois eles não aparecerão importando esquemas.

Dynamics lookup-field column mapping

Se todos os seus registros de origem forem mapeados para a mesma entidade de destino e seus dados de origem não contiverem o nome da entidade de destino, aqui está um atalho: na fonte de atividade de cópia, adicione uma coluna adicional. Nomeie a nova coluna usando o padrão {lookup_field_name}@EntityReference, defina o valor para o nome da entidade de destino e prossiga com o mapeamento de coluna como de costume. Se os nomes das colunas de origem e coletor forem idênticos, você também poderá ignorar o mapeamento explícito de colunas, pois a atividade de cópia por padrão mapeia colunas por nome.

Dynamics lookup-field adding an entity-reference column

Gravar dados em um campo de pesquisa por meio de chaves alternativas

Para gravar dados em um campo de pesquisa usando colunas de chave alternativas, siga estas orientações e exemplo:

  1. Verifique se a fonte contém todas as colunas de chave de pesquisa.

  2. As colunas de chave alternativas devem ser mapeadas para a coluna com o padrão {lookup_field_name}@{alternate_key_column_name}de nomenclatura especial. A coluna não existe no Dynamics. Ele é usado para indicar que essa coluna é usada para procurar o registro na entidade de destino.

  3. Vá para 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 Pesquisa. O valor depois indica as colunas de chave dessa chave alternativa.

    Screenshot shows selecting alternate key columns.

  4. Uma vez selecionadas, as colunas de teclas alternativas serão exibidas automaticamente abaixo.

    Screenshot shows mapping columns to lookup fields via alternate keys step 1.

  5. Mapeie suas colunas de entrada à esquerda com as colunas de saída.

    Screenshot shows mapping columns to lookup fields via alternate keys step 2.

Nota

Atualmente, isso só é suportado quando você usa o modo embutido na transformação do coletor de fluxos de dados de mapeamento.

Mapeando propriedades de fluxo de dados

Ao transformar dados em mapeamento de fluxo de dados, você pode ler e gravar em tabelas no Dynamics. Para obter mais informações, consulte a transformação de origem e a transformação de coletor no mapeamento de fluxos de dados. Você pode optar por usar um conjunto de dados do Dynamics ou um conjunto de dados embutido como tipo de fonte e coletor.

Transformação da fonte

A tabela abaixo lista as propriedades suportadas pelo Dynamics. Você pode editar essas propriedades na guia Opções de origem .

Nome Descrição Necessário Valores permitidos Propriedade do script de fluxo de dados
Nome da entidade O nome lógico da entidade a ser recuperada. Sim ao usar o conjunto de dados embutido - (apenas para conjunto de dados embutido)
entidade
Consulta FetchXML é uma linguagem de consulta proprietária que é usada no Dynamics online e local. Veja o seguinte exemplo. Para saber mais, consulte Criar consultas com FetchXML. Não String query

Nota

Se você selecionar Consulta como tipo de entrada, o tipo de coluna das tabelas não poderá ser recuperado. Ele será tratado como string por padrão.

Exemplo de script de origem do Dynamics

Quando você usa o conjunto de dados 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 o conjunto 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 do lavatório

A tabela abaixo lista as propriedades suportadas pelo coletor do Dynamics. Você pode editar essas propriedades na guia Opções do coletor .

Nome Descrição Necessário Valores permitidos Propriedade do script de fluxo de dados
Nome de chave alternativo O nome de chave alternativo definido em sua entidade para fazer uma atualização, atualização ou exclusão. Não - alternateKeyName
Método de atualização Especifique quais operações são permitidas no destino do banco de dados. O padrão é permitir apenas inserções.
Para atualizar, atualizar ou excluir linhas, uma transformação de linha Alter é necessária para marcar linhas para essas ações.
Sim true ou false inserível
atualizável
Atualizável
suprimido
Nome da entidade O nome lógico da entidade a ser gravada. Sim ao usar o conjunto de dados embutido - (apenas para conjunto de dados embutido)
entidade

Exemplo de script de coletor do Dynamics

Quando você usa o conjunto de dados 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 o conjunto 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

Propriedades da atividade de pesquisa

Para saber detalhes sobre as propriedades, consulte Atividade de pesquisa.

Para obter uma lista de dados suportados que armazenam a atividade de cópia como fontes e coletores, consulte Armazenamentos de dados suportados.