Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Visualização Pública.
Esta página fornece informações de referência técnica para o conector do Microsoft Dynamics 365 no Lakeflow Connect.
Parâmetros de autenticação
O conector do Dynamics 365 usa a autenticação OAuth do Microsoft Entra (antigo Azure Active Directory). Para obter detalhes, consulte Como o conector acessa dados D365?.
Campos de autenticação necessários
Ao criar uma conexão do Catálogo do Unity para D365, forneça estes parâmetros:
| Parâmetro | Description | Example |
|---|---|---|
tenant_id |
Sua ID de locatário do Microsoft Entra ID (ID do diretório) | 12345678-1234-1234-1234-123456789abc |
client_id |
A ID do aplicativo (cliente) do aplicativo Entra ID | 87654321-4321-4321-4321-cba987654321 |
client_secret |
O valor de segredo do cliente criado para seu aplicativo de ID do Entra | abc123~xyz789... |
storage_account_name |
O nome da sua conta de armazenamento do ADLS Gen2 | d365storage |
container_name |
O contêiner em que o Link do Synapse exporta dados | d365-export |
scope |
O escopo do OAuth para acesso ao Armazenamento do Azure | https://storage.azure.com/.default |
Campo de cursor
O conector do Dynamics 365 usa o campo VersionNumber dos logs de alteração do Link do Azure Synapse como o cursor para ingestão incremental.
Comportamento do cursor
-
Fonte: o Link do Synapse gera
VersionNumberautomaticamente valores ao exportar alterações. - Formato: timestamp inteiro que representa a sequência de alterações.
- Escopo: cursor individual por tabela. Cada tabela mantém sua própria posição de cursor.
- Armazenamento: os cursores são armazenados nos metadados do pipeline e não aparecem nas tabelas Delta de destino.
Requisitos de cursor
Para que a ingestão incremental funcione:
- O Link do Synapse deve exportar os changelogs com o campo
VersionNumber. -
VersionNumberdeve estar presente em todos os arquivos de registro de alterações. - As pastas de changelog devem seguir a convenção de nomenclatura baseada no carimbo de data/hora do Link do Synapse.
Se VersionNumber estiver ausente, a ingestão incremental falhará e você deverá executar uma atualização completa.
Descoberta de Esquema
O conector do Dynamics 365 descobre automaticamente esquemas de tabela de metadados do Dataverse.
Processo de descoberta
Ao criar um pipeline:
- O conector lê arquivos de metadados do ADLS Gen2 do Link do Synapse.
- O conector extrai esquemas de tabela dos arquivos JSON de metadados.
- Nomes de coluna, tipos de dados e possibilidade de valor nulo são inferidos a partir dos metadados.
- As tabelas de destino são criadas com os esquemas descobertos.
Tipos de dados do Dataverse com suporte
O conector do Dynamics 365 mapeia os tipos de dados do Dataverse para os tipos de dados Delta Lake.
Mapeamento de tipo de dados
| Tipo de dataverse | Tipo de Delta Lake | Anotações |
|---|---|---|
| Cadeia de caracteres (linha única) | STRING | Comprimento máximo preservado como metadados |
| Cadeia de caracteres (várias linhas) | STRING | |
| Inteiro (Número Inteiro) | INTEGER | |
| BigInt | LONG | |
| Decimal | DECIMAL | Precisão e escala preservadas |
| Double (Ponto flutuante) | DUPLO | |
| Quantia | DECIMAL(19,4) | Armazenado como decimal com 4 casas decimais |
| Booliano (Sim/Não) | BOOLEAN | |
| DateTime | TIMESTAMP | Informações de fuso horário preservadas |
| Date | DATE | |
| Hora | STRING | Armazenado como cadeia de caracteres de tempo ISO 8601 |
| Identificador Único (GUID) | STRING | Armazenado como representação de cadeia de caracteres |
| Busca | STRING | GUID de chave estrangeira armazenado como cadeia de caracteres |
| Lista de seleção (conjunto de opções) | INTEGER | Valor inteiro, não rótulo |
| Lista de seleção múltipla | STRING | Valores inteiros separados por vírgulas |
| Imagem | STRING | URL ou metadados, não dados binários |
| File | STRING | Somente metadados, não conteúdo de arquivo |
Tipos de dados complexos
Alguns tipos do Dataverse exigem tratamento especial:
-
Conjuntos de opções (listas de seleção): ingeridos como códigos inteiros. Para mapear para rótulos, combine com a tabela
OptionSetMetadataou mantenha uma tabela de mapeamento de referência. - Consultas: processadas como cadeias de caracteres GUID. Para obter dados relacionados, junte-se à tabela referenciada.
-
Conjuntos de opções de seleção múltipla: ingeridos como cadeias de caracteres inteiros separadas por vírgulas (por exemplo,
"1,3,5"). Analise a cadeia de caracteres para extrair valores individuais.
Exemplo: analisando conjuntos de opções de seleção múltipla
-- Split comma-separated values into array
SELECT
accountid,
accountname,
SPLIT(industrycodes, ',') AS industry_array
FROM main.d365_data.account;
-- Explode into separate rows
SELECT
accountid,
accountname,
CAST(code AS INT) AS industry_code
FROM main.d365_data.account
LATERAL VIEW EXPLODE(SPLIT(industrycodes, ',')) AS code;
Compatibilidade de versão da API
O conector do Dynamics 365 é compatível com:
- API do Dataverse: versão 9.2 e posterior
- Link do Azure Synapse para Dataverse: versão 1.0 e posterior
- API REST do Armazenamento do Azure: versão 2021-08-06 e posterior
- Microsoft Entra ID: fluxo de credenciais do cliente OAuth 2.0
Observação
Versões de API mais antigas podem funcionar, mas não têm suporte oficial. Mantenha seus serviços D365 e Azure atualizados para obter a melhor compatibilidade.
Comportamento de ingestão incremental
A ingestão incremental do conector do Dynamics 365 segue estas regras:
Detecção de alterações
- Inserções: novos registros detectados por sua presença em logs de alterações.
-
Atualizações: registros modificados identificados por alterações em
VersionNumber. - Exclusões: registros excluídos identificados por marcadores de exclusão em changelogs (se exportados pelo Link do Synapse).
Comportamento do SCD Tipo 1
Para pipelines SCD Tipo 1, os registros são atualizados no local sem preservar o histórico. As atualizações substituem as linhas existentes com base na chave primária, e as exclusões removem linhas (se o rastreamento de exclusão estiver habilitado).
Estrutura de tabela de exemplo:
SELECT * FROM main.d365_data.account ORDER BY accountid;
-- Result: Latest state only
-- accountid | accountname | modifiedon
-- 123 | Acme Corp | 2025-12-03 10:00:00
-- 456 | TechCo | 2025-12-03 09:30:00
Comportamento do SCD Tipo 2
Para pipelines SCD Tipo 2, todas as alterações são preservadas como novas versões de linha. O conector adiciona __START_AT, __END_ATe __CURRENT colunas para acompanhar o histórico de versão.
Estrutura de tabela de exemplo:
SELECT * FROM main.d365_data.account ORDER BY accountid, __START_AT;
-- Result: All historical versions
-- accountid | accountname | __START_AT | __END_AT | __CURRENT
-- 123 | Acme Inc | 2025-11-01 08:00:00 | 2025-12-03 10:00:00 | false
-- 123 | Acme Corp | 2025-12-03 10:00:00 | NULL | true
-- 456 | TechCo | 2025-12-01 14:00:00 | NULL | true
Excluir tratamento
Tratamento de exclusão depende da sua configuração no Link do Synapse.
- Exclusões definitivas: se o Link do Synapse exportar registros de exclusão, o conector removerá (SCD Tipo 1) ou marcará (SCD Tipo 2) registros excluídos.
- Sem controle de exclusão: se o Link do Synapse não exportar exclusões, os registros excluídos permanecerão nas tabelas de destino até que você execute uma atualização completa.
Verifique se a configuração do Link do Synapse exporta exclusões para um rastreamento de exclusão preciso.
Parâmetros do pipeline
Ao criar um pipeline de ingestão D365, especifique estes parâmetros:
Parâmetros necessários
| Parâmetro | Tipo | Description | Example |
|---|---|---|---|
channel |
String | Deve ser PREVIEW |
"PREVIEW" |
connection_name |
String | Nome da conexão do Unity Catalog | "d365_connection" |
source_schema |
String | URL ou ID do ambiente do Dataverse | "https://yourorg.crm.dynamics.com" |
source_table |
Array[String] | Lista de nomes lógicos da tabela D365 | ["account", "contact"] |
destination_catalog |
String | Catálogo de destino do Unity Catalog | "main" |
destination_schema |
String | Esquema do Unity Catalog de destino | "d365_data" |
scd_type |
String |
SCD_TYPE_1 ou SCD_TYPE_2 |
"SCD_TYPE_2" |
Parâmetros opcionais
| Parâmetro | Tipo | Description | Example |
|---|---|---|---|
table_configuration |
Object | Configurações por tabela (seleção de coluna, etc.) | Consulte a seleção de colunas |
Configuração de pipeline de exemplo
Conclua a configuração do pipeline usando o SDK do Python:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.pipelines import IngestionPipelineDefinition
w = WorkspaceClient()
pipeline = w.pipelines.create(
name="d365_comprehensive_ingestion",
ingestion_definition=IngestionPipelineDefinition(
channel="PREVIEW",
connection_name="d365_connection",
source_schema="https://contoso.crm.dynamics.com",
source_table=[
"account",
"contact",
"opportunity",
"salesorder",
"systemuser"
],
destination_catalog="main",
destination_schema="d365_sales",
scd_type="SCD_TYPE_2",
table_configuration={
"account": {
"columns": [
"accountid",
"accountnumber",
"name",
"emailaddress1",
"telephone1"
]
}
}
)
)
Localizando nomes lógicos de tabela
Para identificar nomes lógicos de tabela para o source_table parâmetro:
- Power Apps Maker Portal: navegue até Tabelas e visualize a coluna Nome lógico.
-
API do Dataverse: consultar metadados usando
https://yourorg.api.crm.dynamics.com/api/data/v9.2/EntityDefinitions. - Armazenamento do ADLS Gen2: Listar pastas no contêiner do Link do Synapse (os nomes das pastas correspondem aos nomes lógicos).
Dica
Use nomes lógicos minúsculos em configurações de pipeline (por exemplo, "account" em vez de "Account"). O conector diferencia maiúsculas de minúsculas.
Ajuste de desempenho
O conector do Dynamics 365 fornece opções limitadas de ajuste de desempenho:
Seleção de coluna
Selecione apenas as colunas necessárias para reduzir:
- Transferência de dados do ADLS Gen2
- Custos de armazenamento no Delta Lake
- Tempo de processamento da consulta
Consulte a seleção de coluna para obter detalhes de configuração.
Agrupamento de tabelas
Para ambientes com muitas tabelas:
- Tabelas relacionadas: agrupar tabelas relacionadas no mesmo pipeline para facilitar o gerenciamento.
- Baseado em volume: separe tabelas de alto volume em pipelines dedicados.
- Frequência de atualização: agrupar tabelas com padrões de atualização semelhantes.
Observação
Cada pipeline é limitado a 250 tabelas. Para ambientes maiores, crie vários pipelines.
Resolução de problemas
Para problemas e soluções comuns ao trabalhar com o conector do Dynamics 365, consulte Solucionar problemas de ingestão do Microsoft Dynamics 365.