You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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的映射标签页完成字段关联:

  1. 点击导入架构,ADF会自动识别OrdinaryCargo及其子节点的字段。
  2. 手动添加上层关联字段(如Message、Voyage中的信息),使用XPath表达式提取:
    • 提取MessageId:源表达式写为 @xpath(item(), '/root/Message/MessageId'),映射到SQL表的MessageId列
    • 提取ETA日期:源表达式写为 @xpath(item(), '/root/MessageList/Voyage/Arrival/ArrivalDateTime/ETA/Date'),映射到ETADate列
  3. 直接映射OrdinaryCargo内部字段:
    • OC_TransportUnit/TransportUnitTypeDescr → TransportUnitTypeDescr
    • OC_TransportUnit/TransportUnitType → TransportUnitType
    • OC_TransportUnit/TransportUnitCount → TransportUnitCount
    • OC_TransportUnit/TransportUnitPort → TransportUnitPort
    • OC_TransportUnit/TransportUnitRef → TransportUnitRef
    • OC_TransportUnit/TransportUnitId → TransportUnitId(缺失该节点的行会自动填充空值)

四、验证运行

运行Copy Activity后,检查SQL表:每个OrdinaryCargo实例应作为独立行存在,且所有关联字段正确填充。

备选方案:用Data Flow处理复杂结构

如果XML层级嵌套更复杂,可使用Data Flow:

  1. 以XML为源,设置根节点为/root
  2. 添加Flatten转换,选择MessageList/CargoList/OrdinaryCargo作为展平数组,将每个数组元素转为一行
  3. 添加Derived Column转换提取上层节点信息
  4. 连接SQL目标数据集完成写入

内容的提问来源于stack exchange,提问作者glaring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:42:37