Azure Data Factory单条记录时Collection reference失效如何解决
问题根因
该问题是XML解析的通用特性导致的:默认场景下,解析器仅会将≥2个的同级同名节点识别为数组类型,仅存在1个同级同名节点时,会被判定为对象类型,你配置的Collection Reference是针对数组结构设计的,因此匹配不到节点导致无数据写入。
解决方案
方案1(优先推荐,无需改动现有流程)
修改XML读取数据集的解析配置即可直接修复:
- 打开你用来读取XML文件的数据集,进入格式设置板块
- 勾选
将单例元素视为数组选项,对应数据集的JSON定义会自动添加"singletonAsArray": true配置项 - 保存配置后重新运行Copy Activity,单条Room记录也会被正常识别为数组元素完成写入
方案2(兼容旧版集成运行时场景)
如果方案1不生效,可改用映射数据流替换原Copy Activity做数据处理:
- 在数据流中添加XML源,正常读取目标XML文件
- 添加派生列转换,新建
RoomArray字段,表达式写为array(Room),强制将Room节点转换为数组类型,不受节点数量影响 - 添加扁平化转换,展开
RoomArray下的Id、Code、Beds等所有子字段 - 配置数据库接收器,匹配字段后运行即可
方案3(临时变通方案)
如果不方便修改数据工厂侧配置,可调整XML文件生成规则:
在Rooms节点添加xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"属性,同时给Room节点添加msdata:IsDataSet="true"属性,强制XML解析器将Room节点识别为数组集合。
内容的提问来源于stack exchange,提问作者Jorge
相关产品推荐
相关产品推荐

