Azure Data Flows:提取XML深层嵌套ShipmentID至Shipments表
Azure Data Flows提取嵌套ShipmentID并写入SQL表的解决方案
步骤1:筛选目标ShipmentID节点
既然已经完成了compartments和references的扁平化,直接添加一个Filter转换,设置过滤条件为:
referenceType == 'ShipmentID'
这一步会把所有referenceType匹配的节点筛选出来,对应的referenceValue就是你要的ShipmentID。
步骤2:关联compartment主数据
如果需要把ShipmentID和对应的compartment信息绑定(毕竟要写入ShipmentCompartments关联表),添加Join转换:
- 左分支选你之前扁平化后的完整compartment数据流(未筛选references的那一支)
- 右分支选刚才筛选出ShipmentID的数据流
- 关联键用compartment的唯一标识字段(比如你的XML里的
compartmentId或类似唯一键)
这样就能把每个compartment对应的ShipmentID关联到一起。
步骤3:拆分数据流写入两张目标表
添加Split转换,把数据流拆成两支分别处理:
写入Shipments表:
- 只保留ShipmentID(即
referenceValue)以及Shipments表需要的其他核心字段(如果XML里有 shipment级别的属性) - 用Aggregate转换按ShipmentID分组,取唯一值(避免同一个ShipmentID因多compartment重复写入)
- 连接到Azure SQL的Shipments Sink,设置写入模式(比如
insert或upsert),并指定主键为ShipmentID
- 只保留ShipmentID(即
写入ShipmentCompartments表:
- 保留compartment的所有字段,加上关联后的ShipmentID
- 连接到Azure SQL的ShipmentCompartments Sink,设置复合主键(比如compartmentId + ShipmentID),选择合适的写入模式
额外注意点
- 确保XML扁平化时没有丢失compartment的唯一标识,否则Join步骤无法正确关联
- 如果Shipments表需要的字段不在compartment层级,可能需要回到数据源分支,从XML的更高层级提取对应字段后再关联
内容的提问来源于stack exchange,提问作者Jacques
相关产品推荐
相关产品推荐

