如何在ADF中成功拉取Dynamics CRM Option Set全量数据
问题根因
你遇到的报错核心原因是Dynamics CRM不存在支持RetrieveMultiple方法直接查询的名为optionset的实体——ADF ingest向导实体列表里展示的optionset是系统元数据结构,不支持批量数据查询接口调用,直接选择就会触发你看到的-2147219456错误。
日常业务场景中,所有实体字段存储的选项集ID对应的文本标签,都存在系统实体StringMap中,这张表是你做left join关联匹配label最直接的数据源,不需要提前手动收集每个选项集的属性信息。
ADF全量拉取选项集映射数据操作步骤
1. 配置复制活动源
- 新建管道,拖入「复制数据」活动,源端选择你已经验证过可以正常拉取其他实体数据的Dynamics CRM链接服务。
- 源数据查询模式不要选择默认的「表/实体」,下拉选择FetchXML模式。
- 在FetchXML编辑框中粘贴以下查询语句,该语句会拉取全环境所有选项集的ID-标签映射,无需提前掌握任何自定义选项集的属性:
<fetch> <entity name="stringmap" > <attribute name="objecttypecode" /> <attribute name="attributename" /> <attribute name="value" /> <attribute name="langid" /> <attribute name="displayvalue" /> </entity> </fetch>
返回字段说明:
objecttypecode:选项集所属实体的逻辑名,例如account(客户)、contact(联系人)attributename:选项集字段的逻辑名value:选项集存储的整数ID,即其他业务实体中对应字段存储的值langid:标签对应的语言编码,简体中文为2052,英文为1033displayvalue:你最终需要关联获取的文本label值
2. 配置复制活动目标
- 目标端选择你要输出parquet文件对应的存储服务(ADLS Gen2、Blob存储等均可),配置好文件存放路径。
- 切换到「映射」标签页,点击「导入架构」,系统会自动识别FetchXML返回的5个字段,无需手动调整字段映射。
3. 自动化流程配置
- 若需要同步选项集的新增、修改,直接给该管道配置定时调度,每次运行时全量覆盖目标路径下的stringmap parquet文件即可,不需要做增量逻辑。这张表数据量极小(通常几万条以内),全量拉取耗时在数秒级别。
- 后续做数据转换关联时,关联条件匹配三个字段即可:业务实体对应的实体逻辑名匹配
objecttypecode、选项集字段名匹配attributename、字段存储的整数值匹配value,同时增加langid过滤匹配你需要的语言版本,就能准确关联到对应的文本label。
补充说明
如果你的环境中使用了跨实体复用的全局选项集,上述查询同样会返回全局选项集在各个引用实体下的完整映射,完全覆盖left join关联的需求,不需要额外查询其他元数据实体。
内容的提问来源于stack exchange,提问作者DaarioNaharis
相关产品推荐
相关产品推荐

