借助 Datastream,您可以从 Microsoft Dataverse 环境中复制历史数据和增量更改,以进行分析和数据集成。Dataverse 是一个基于云的数据平台,用于存储和管理业务应用使用的数据。
在配置 Dataverse 来源之前,请先查看 Datastream 中的关键术语、复制行为、支持的版本和已知限制。
关键词
Dataverse 采用以下概念:
- 表(以前称为实体)类似于关系型数据库中的表。Dataverse 默认包含标准表,但您也可以创建自定义表。
- 列(以前称为字段)是表的属性,类似于关系型数据库中的列。
- “行”是表中的特定记录,类似于关系型数据库中的行。
行为
Datastream 中的 Dataverse 来源支持依赖于 Dataverse Web API,该 API 使用开放数据协议 (OData)。Datastream 会根据您设置的时间间隔轮询源更改。
从 Dataverse 来源复制数据时,会观察到以下行为:
- API 交互:Datastream 使用 RESTful 请求与 Dataverse Web API 进行交互。基础环境网址为
https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/。 使用标准标头(Accept: application/json、OData-MaxVersion: 4.0、OData-Version: 4.0)。 - 身份验证:Datastream 使用 OAuth 2.0 和客户端凭证授权类型处理身份验证。Datastream 会从 Microsoft Identity Platform 获取令牌。
架构发现:Dataverse 架构是动态的。Datastream 通过查询
/EntityDefinitions端点来发现对象名称和架构。- 对象名称:Datastream 通过向
/EntityDefinitions实体集路径发送GET请求(其中包含$filter=TableType ne 'Virtual' and IsPrivate eq false过滤条件和$select=EntitySetName参数)来提取对象名称。 - 对象架构:Datastream 通过向
/EntityDefinitions实体集路径发送GET请求(其中包含$expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName)参数和$filter=EntitySetName eq '[objectName]'过滤条件),按实体提取对象架构。
- 对象名称:Datastream 通过向
数据复制:
- Datastream 会复制标准和自定义 Dataverse 表。不包括虚拟表和不公开表。
- 历史回填:如果为数据流配置了历史回填,Datastream 会复制所包含表的所有历史数据。为此,您需要向实体集发送初始
GET请求,并使用 API 响应中提供的@odata.nextLink属性遍历所有页面。 使用Prefer: odata.maxpagesize=5000标头。 - 增量同步:Datastream 会复制插入和更新事件。这是通过使用基于时间戳的同步来实现的,即过滤
modifiedon字段大于上次同步时间 ($filter=modifiedon gt [last_sync_timestamp]) 的记录。Datastream 不会捕获删除事件。
轮询间隔:Datastream 会根据您在创建数据流时设置的轮询间隔来轮询更改。该间隔时间会反映在数据流的数据新鲜度指标中。
所有复制的对象都支持使用 modifiedon 字段进行增量同步,以及完整回填。
版本
Datastream 使用 Dataverse Web API v9.1 版。
已知限制
将 Dataverse 用作来源时的已知限制包括:
- 基于
modifiedon时间戳的增量同步方法不会捕获删除事件。 - Datastream 不支持使用增量链接 (
@odata.deltaLink) 的 Dataverse 推荐更改跟踪功能。这是因为不支持存储后续增量拉取所需的增量链接网址。 - 复制仅限于标准表和自定义表。不支持虚拟表和私有表。
- 准确更新源表中的
modifiedon字段对于确保增量同步按预期运行至关重要。 - 如需检索
Picklist字段的标签,数据请求必须包含Prefer: data.include-annotations="*"标头,而不仅仅是整数值。
后续步骤
- 了解如何配置 Dataverse 来源以与 Datastream 搭配使用。