Fazer streaming de dados do Microsoft Dataverse

O Datastream oferece suporte à replicação de eventos de mudança de uma instância do Microsoft Dataverse. O Dataverse é uma plataforma de dados baseada na nuvem que permite armazenar e gerenciar com segurança os dados usados por aplicativos empresariais.

Esta página contém informações sobre:

  • Os termos principais que você precisa entender ao replicar do Dataverse.
  • O comportamento de como o Datastream lida com dados que estão sendo extraídos de um ambiente de origem do Dataverse.
  • As versões do Dataverse compatíveis com o Datastream.
  • Limitações conhecidas para o uso do Dataverse como fonte.

Termos-chave

O Dataverse opera usando os seguintes conceitos:

  • Uma tabela, anteriormente uma entidade, é semelhante a uma tabela em bancos de dados relacionais. O Dataverse inclui tabelas padrão por padrão, mas também é possível criar tabelas personalizadas.
  • Uma coluna, anteriormente um campo, é um atributo de uma tabela e é semelhante a uma coluna em bancos de dados relacionais.
  • Uma linha é um registro específico em uma tabela e é semelhante a uma linha em bancos de dados relacionais.

Comportamento

O suporte à fonte do Dataverse no Datastream depende da API Web do Dataverse, que usa o Open Data Protocol (OData). O Datastream pesquisa mudanças de origem com base no intervalo definido.

Ao replicar dados de uma fonte do Dataverse, o seguinte comportamento é observado:

  • Interação da API: o Datastream interage com a API Web do Dataverse usando solicitações RESTful. O URL do ambiente de base é https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/. Os cabeçalhos padrão (Accept: application/json, OData-MaxVersion: 4.0, OData-Version: 4.0) são usados.
  • Autenticação: o Datastream processa a autenticação usando o OAuth 2.0 com o tipo de concessão de credenciais do cliente. O Datastream recebe tokens da plataforma de identidade da Microsoft.
  • Descoberta de esquema: os esquemas do Dataverse são dinâmicos. O Datastream descobre nomes e esquemas de objetos consultando o endpoint /EntityDefinitions.

    • Nomes de objetos: o Datastream busca nomes de objetos enviando uma solicitação GET para o caminho do conjunto de entidades /EntityDefinitions com o filtro $filter=TableType ne 'Virtual' and IsPrivate eq false e o parâmetro $select=EntitySetName.
    • Esquema de objetos: o Datastream busca o esquema de objetos por entidade enviando uma solicitação GET para o caminho do conjunto de/EntityDefinitions entidades com o $expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName) parâmetro e o filtro $filter=EntitySetName eq '[objectName]'.
  • Replicação de dados:

    • O Datastream replica tabelas padrão e personalizadas do Dataverse. Ele exclui tabelas virtuais e particulares.
    • Preenchimento histórico: se configurado para um stream, o Datastream replica todos os dados históricos das tabelas incluídas. Isso é feito enviando uma solicitação GET inicial para o conjunto de entidades e iterando por todas as páginas usando a propriedade @odata.nextLink fornecida nas respostas da API. O cabeçalho Prefer: odata.maxpagesize=5000 é usado.
    • Sincronização incremental: o Datastream replica eventos de inserção e atualização. Isso é feito usando a sincronização baseada em carimbo de data/hora, filtrando registros em que o modifiedon campo é maior que a última hora de sincronização ($filter=modifiedon gt [last_sync_timestamp]). O Datastream não captura eventos de exclusão.
  • Intervalo de pesquisa: o Datastream pesquisa mudanças de acordo com o intervalo de pesquisa definido ao criar o stream. O intervalo é refletido na métrica de atualização de dados do stream.

Todos os objetos replicados oferecem suporte à sincronização incremental, usando o campo modifiedon, e ao preenchimento completo.

Versões

O Datastream usa a versão v9.1 da API Web do Dataverse.

Limitações conhecidas

Limitações conhecidas para o uso do Dataverse como fonte incluem:

  • O método de sincronização incremental, com base no carimbo de data/hora modifiedon, não captura eventos de exclusão.
  • O Datastream não oferece suporte ao recurso de rastreamento de mudanças recomendado pelo Dataverse que usa links delta (@odata.deltaLink). Isso ocorre porque o armazenamento do URL do link delta necessário para extrações incrementais subsequentes não é compatível.
  • A replicação é limitada a tabelas padrão e personalizadas. Tabelas virtuais e particulares não são compatíveis.
  • A atualização precisa do campo modifiedon nas tabelas de origem é fundamental para garantir que a sincronização incremental funcione conforme o esperado.
  • Para recuperar os rótulos dos campos Picklist, as solicitações de dados precisam incluir o Prefer: data.include-annotations="*" cabeçalho e não apenas os valores inteiros.

A seguir