如何在ADF/Synapse中遍历对象并移除下划线适配复制操作
解决ADF/Synapse中对象名移除下划线的方法
方法一:管道表达式批量处理对象列表
如果对象列表是管道参数(数组类型),直接用map()和replace()函数批量清理下划线:
- 假设原参数为
@pipeline().parameters.ObjectList,处理表达式:
@map(pipeline().parameters.ObjectList, replace(item(), '_', ''))
处理后得到无下划线的数组['AdminUser', 'Adminprocess', 'TempUser'],可直接传入复制活动的表名参数。
- 若需手动指定列表,用
createArray()配合replace():
@createArray( replace('AdminUser', '_', ''), replace('Admin_process', '_', ''), replace('TempUser', '_', '') )
方法二:数据流中处理表名字段
如果是在数据流内遍历表列表,通过派生列清理下划线:
- 添加派生列转换,设置列名为
CleanTableName,表达式写:
replace(TableName, '_', '')
(TableName为存储原对象名的字段)
- 后续复制活动直接引用
CleanTableName作为目标对象名。
方法三:元数据活动后预处理列表
如果对象列表来自Get Metadata活动返回的表集合:
- 在
Get Metadata后添加For Each活动,遍历返回的表项 - For Each内部添加
Set Variable活动,将当前表名处理后存入新数组变量:- 变量类型设为数组,赋值表达式:
@concat(variables('CleanObjectList'), createArray(replace(item().name, '_', '')))
- 变量类型设为数组,赋值表达式:
- 最终用这个清理后的数组变量作为复制活动的输入列表。
内容的提问来源于stack exchange,提问作者Never_Give_Up
相关产品推荐
相关产品推荐

