如何在Azure Data Factory中解析含OrdinaryCargo数组的XML至SQL表
用Azure Data Factory解析XML数组并批量插入SQL表
一、配置XML源数据集
- 创建XML类型的源数据集,指向存储XML文件的Blob/ADLS等位置。
- 无需在数据集内指定根节点,后续通过Copy Activity的XPath精准定位目标节点。
二、配置Copy Activity的源查询
要遍历所有OrdinaryCargo节点,在Copy Activity的源设置中,将查询设置为对应的XPath:
//CargoList/OrdinaryCargo
(如果XML有最外层根节点,比如<root>,则调整为/root/MessageList/CargoList/OrdinaryCargo)
三、字段映射配置
在Copy Activity的映射标签页完成字段关联:
- 点击导入架构,ADF会自动识别
OrdinaryCargo及其子节点的字段。 - 手动添加上层关联字段(如Message、Voyage中的信息),使用XPath表达式提取:
- 提取
MessageId:源表达式写为@xpath(item(), '/root/Message/MessageId'),映射到SQL表的MessageId列 - 提取ETA日期:源表达式写为
@xpath(item(), '/root/MessageList/Voyage/Arrival/ArrivalDateTime/ETA/Date'),映射到ETADate列
- 提取
- 直接映射
OrdinaryCargo内部字段:OC_TransportUnit/TransportUnitTypeDescr→TransportUnitTypeDescrOC_TransportUnit/TransportUnitType→TransportUnitTypeOC_TransportUnit/TransportUnitCount→TransportUnitCountOC_TransportUnit/TransportUnitPort→TransportUnitPortOC_TransportUnit/TransportUnitRef→TransportUnitRefOC_TransportUnit/TransportUnitId→TransportUnitId(缺失该节点的行会自动填充空值)
四、验证运行
运行Copy Activity后,检查SQL表:每个OrdinaryCargo实例应作为独立行存在,且所有关联字段正确填充。
备选方案:用Data Flow处理复杂结构
如果XML层级嵌套更复杂,可使用Data Flow:
- 以XML为源,设置根节点为
/root - 添加Flatten转换,选择
MessageList/CargoList/OrdinaryCargo作为展平数组,将每个数组元素转为一行 - 添加Derived Column转换提取上层节点信息
- 连接SQL目标数据集完成写入
内容的提问来源于stack exchange,提问作者glaring
相关产品推荐
相关产品推荐

