Data Factory实现本地SQL到Azure SQL动态列映射同步的方案咨询
ADF 同步多表动态列映射配置步骤
1. 动态生成源端查询(实现指定列选取)
Copy活动的源端配置不要选择「表」模式,切换为「查询」模式,填入以下动态表达式:
@concat( 'SELECT ', join( map(activity('LookupColumns').output.value, concat('[', item().SourceColumnName, ']')), ', ' ), ' FROM ', item().SourceSchema, '.', item().SourceTableName )
该表达式会自动拼接当前表需要同步的所有源列,仅选取你元数据中配置的列读取,避免拉取多余数据。
2. 动态生成Copy活动的列映射结构
你可以直接在Copy活动的映射配置中使用动态表达式,将Lookup拿到的元数据转换为ADF要求的映射格式:
你可以选择在For Each循环内新增一个「设置变量」活动,变量类型选择「数组」,变量值填入以下表达式:
@json( concat( '[', join( map( activity('LookupColumns').output.value, concat( '{"source": {"name": "', item().SourceColumnName, '"}, "sink": {"name": "', item().TargetColumnName, '"}}' ) ), ',' ), ']' ) )
如果你不想新增变量,也可以直接把上述表达式填入Copy活动的映射动态内容框中,效果一致。
3. 配置Copy活动的动态映射
打开Copy活动的「映射」标签页,关闭「导入架构」的默认配置,将映射内容切换为动态输入,直接引用上一步生成的数组变量即可。
注意事项
- 若源端列名包含空格、特殊字符,查询语句中包裹列名的方括号可以避免SQL语法错误,你也可以根据你的数据源类型替换为对应引号规则。
- 测试阶段建议开启For Each的「顺序」开关,先少量测试1-2张表的映射正确性,确认数据同步无误后再开启并行执行提升效率。
- 提前校验元数据表中的列数据类型兼容性,避免类型不匹配导致的同步报错。
内容的提问来源于stack exchange,提问作者djh
相关产品推荐
相关产品推荐

