来自以下问题的解决方案:在接收器数据集中动态输入表名称时复制数据活动失败
如何修改管道以一次复制多个表,类似的场景如下:
开发订阅 (devstacuks01)
UAT订阅(uatstacuks01)
devtable01 数据 --> uattable01 devtable02 数据 --> uattable02
为此,您需要源及其目标表名称列表,如下所示。
[
{
"source_table":"mytable1",
"target_table":"target1"
},
{
"source_table":"mytable2",
"target_table":"target2"
}
]
在ADF管道中,创建一个数组参数并将上述值作为默认值。
您已经提到您的存储帐户来自不同的订阅。 因此,您不能使用单一链接服务。您需要创建两个表存储类型的链接服务,一个用于源存储帐户,另一个用于目标存储帐户。
同样,为目标订阅存储帐户创建另一个链接服务。
接下来,您需要创建数据集。对于数据集,您需要两个数据集,一个用于源链接服务,另一个用于目标链接服务。
由于要复制多个表,因此需要参数化数据集中的表名。
创建一个字符串参数
table_name
并将其用于数据集中的 Table 属性。
同样,对目标数据集也执行相同的操作。
现在,在管道中,采用 For-Each 活动并将之前创建的数组参数提供给 for-each 表达式。
在 For-each 内部,以上述数据集作为源和接收器进行复制活动。现在,将 for 循环中的表名称
@item().source_table
和 @item().target_table
分别指定给复制活动的源和接收器中的数据集参数。
现在,调试管道,源表数据将在每次迭代中复制到目标表,如下所示。