Azure Data Factory:将Web活动响应数组用作复制数据的数据源
将Web活动的嵌套JSON响应写入Azure SQL Server
问题描述
已通过Web活动获取到嵌套结构的JSON响应,需要将数据保存到Azure SQL Server,但不知道如何把该Web活动的响应作为数据源使用。JSON结构如下:
{ "type": "array", "items": { "type": "object", "properties": { "ColData": { "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" }, "id": { "type": "string" } }, "required": [ "value" ] } }, }, } }
解决方案
1. 暂存Web活动响应(可选)
如果数据量不大,可通过Set Variable活动将Web活动的响应存储到数组类型变量中,后续步骤直接引用该变量。变量类型选Array,值设为@activity('你的Web活动名称').output。
2. 扁平化嵌套JSON
由于你的JSON是两层数组嵌套(外层数组+每个元素内的ColData数组),必须先扁平化才能写入SQL表:
- 用Data Flow处理:
- 添加
Source,选择Inline数据源,通过数据流参数传入@activity('你的Web活动名称').output作为输入。 - 用Flatten转换先展开外层数组,再针对
ColData数组做二次Flatten,将嵌套的value和id拆为平级字段。 - 最后用Sink连接Azure SQL Server,完成字段映射后写入数据。
- 添加
- 用Copy Activity处理:
- 源选择
Inline数据集,将@activity('你的Web活动名称').output作为数据源内容。 - 在Mapping面板开启
Import schemas,手动调整嵌套字段映射,把ColData中的value、id对应到SQL表的目标列;若层级复杂,建议先通过Data Flow处理再复制。
- 源选择
3. 引用Web活动响应作为数据源
所有后续活动中,均可通过表达式@activity('你的Web活动名称').output直接引用Web活动的输出结果作为数据源。
4. 写入SQL的注意事项
- 确保SQL表字段类型与JSON中
value、id的类型匹配(如均为字符串类型)。 - 大数据量优先用Data Flow处理,性能更优;小数据量用Copy Activity加映射即可。
- 若需逐条处理数据,可使用For Each活动遍历
@activity('你的Web活动名称').output,循环内通过Copy Activity或存储过程活动写入单条数据。
内容的提问来源于stack exchange,提问作者Tasnim Khan
相关产品推荐
相关产品推荐

