如何使用Data Factory导出Dataverse中Choice字段及对应标签至Azure SQL数据库
Data Factory导出Dataverse Choice字段及文本标签的可行方案
问题根因
Dataverse中Choice字段默认存储整数类型的选项值,对应的文本标签存储在平台元数据中,原生Dataverse连接器默认仅返回选项数值,未关联元数据所以无法直接导出文本标签。
可行官方方案(无需第三方工具)
方案1:OData查询直接拉取格式化值(单表少量Choice场景首选)
- 配置Data Factory Dataverse源时,选择查询模式而非直接选择表
- 编写OData请求指定返回Choice字段的格式化文本,语法为
自定义文本字段名=Choice字段逻辑名@OData.Community.Display.V1.FormattedValue - 示例查询结构:
https://<你的环境域名>.api.crm.dynamics.com/api/data/v9.2/<表逻辑名>?$select=常规字段1,常规字段2,&$select=自定义Choice文本字段=choice字段逻辑名@OData.Community.Display.V1.FormattedValue - 源配置完成后直接将返回的选项数值、文本字段映射到Azure SQL对应列即可,支持单选项、多选项Choice类型
方案2:关联StringMap元数据表(批量多表多Choice场景首选)
- 先做一次性全量同步:将Dataverse内置
StringMap元数据表同步到Azure SQL中间表,该表存储了所有Choice字段的选项数值、对应文本标签、所属表、所属字段的全量映射关系 - 配置业务表导出数据流时,添加Lookup转换关联已同步的
StringMap中间表,关联条件:- 业务表.Choice字段值 = StringMap.AttributeValue
- 业务表逻辑名 = StringMap.ObjectTypeCode
- Choice字段逻辑名 = StringMap.AttributeName
- 关联后取出
StringMap.Value列即为Choice文本标签,后续新增Choice选项仅需定期同步StringMap表,无需修改单表导出配置
方案3:替换为Synapse Link for Dataverse(原Data Export Services官方替代方案,综合最优)
- 该工具是微软官方推出的Data Export Services替代产品,完全兼容原有导出场景,支持自动同步Dataverse全量/增量数据到Azure SQL、Azure Data Lake等存储
- 默认自动同步Choice字段的选项数值和对应文本标签到目标库,无需额外配置映射,支持Delta增量同步,性能优于Data Factory自定义同步链路,配置成本极低
以上方案均为微软原生支持能力,无需引入第三方工具即可满足需求。
内容的提问来源于stack exchange,提问作者SLS Hughes
相关产品推荐
相关产品推荐

