Azure Data Factory中读取并更新JSON控制文件的实现求助
Azure Data Factory 无数据流实现JSON控制文件更新方案
一、前置变量定义
- 创建以下流水线变量:
ControlFileContent:类型设为Array,初始值留空,用来存储读取到的原始JSON控制数据UpdatedControlArray:类型设为Array,初始值留空,用来逐个存储更新后的表配置对象CurrentLoadDate:类型设为String,初始值设为@utcNow('yyyy-MM-ddTHH:mm:ss'),统一用当前UTC时间作为更新后的LastLoadDate
二、读取原始控制文件
用Lookup活动读取存储里的JSON控制文件,把活动输出的内容赋值给ControlFileContent变量,表达式:
@activity('Lookup Control File').output.value
三、ForEach循环处理每个表配置
把ForEach活动的迭代项设为 @variables('ControlFileContent'),循环内部执行以下操作:
- 执行现有复制活动:用当前迭代项的
SchemaName、TableName、SearchColumn和LastLoadDate完成数据同步(这部分你已跑通,无需调整) - 生成更新后的配置对象并追加到数组:
- 新增Set Variable活动,生成更新后的JSON对象,表达式:
@json(concat('{ "SchemaName": "', item().SchemaName, '", "TableName": "', item().TableName, '", "SearchColumn": "', item().SearchColumn, '", "LastLoadDate": "', variables('CurrentLoadDate'), '" }')) - 用Append Variable活动,把上面生成的对象追加到
UpdatedControlArray变量中
- 新增Set Variable活动,生成更新后的JSON对象,表达式:
四、生成标准JSON字符串
循环结束后,新增Set Variable活动,将数组转换为可写入的JSON字符串(变量类型设为String),表达式:
@string(variables('UpdatedControlArray'))
五、写回控制文件
用复制活动覆盖原控制文件:
- 源:选择Inline dataset,类型设为JSON,内容填
@variables('FinalJSONString')(FinalJSONString即上述生成的字符串变量) - 目标:选择控制文件的存储路径,设置为覆盖模式
之前报错的原因
你之前直接拼接字符串容易出现格式问题(比如缺逗号、引号不匹配),且强行将字符串转为数组会触发类型不匹配错误。改用数组变量存储每个更新后的对象,最后统一转JSON字符串,既能保证格式正确,也不会有类型冲突。
内容的提问来源于stack exchange,提问作者Pysparker
相关产品推荐
相关产品推荐

