无法获取在同一租户中的两个不同订阅之间执行 ADF 中的 Blob 容器复制数据活动的正确步骤

问题描述 投票:0回答:1

如何在存储帐户的订阅之间复制文件共享数据 - 描述中给出的场景

使用上述问题给出的相同解决方案,我尝试在启用公共访问的不同订阅中跨存储帐户实现 Blob 容器。

当从该解决方案进入链接服务步骤时,我无法执行此步骤

@{linkedService().filesharename}
,因为这里是 Blob 存储服务。

任何人都可以帮我解决这个问题吗?

场景:

在同一个 Azure 租户中,我们在 2 个订阅中有 2 个存储帐户。在第一个订阅 - Blob 容器存储帐户中,我们在不同的 Blob 容器中拥有数据,例如:

  • blobcontainer1uat
  • blobcontainer1uat

我们需要将数据移动到第二个订阅 - Blob 容器存储帐户,该帐户具有如下 Blob 容器:

  • blobcontainer1stg
  • blobcontainer1stg

在简单上下文中,我们必须将数据从 Fileshare1uat 移动到 fileshare1stg,并同样移动到下一个 Blob 容器。

azure azure-data-factory azure-blob-storage azure-storage
1个回答
0
投票

对于文件共享,文件共享名称应在链接服务本身中指定,因此这就是我们需要在该场景中使用链接服务参数的原因。

在这种情况下,当您想要在容器之间复制数据时,可以在数据集级别本身指定 Blob 容器。因此,无需使用链接服务参数。要指定容器,您只需使用数据集参数。

首先,您需要为不同订阅中的存储帐户创建两个 Blob 存储链接服务。这里不需要使用任何参数,如下创建链接服务。

enter image description here

同样,为目标 Blob 存储帐户创建另一个帐户。

现在,使用源容器名称和目标容器名称创建一个数组,并将其提供给管道数组参数。

[
{
"source_container":"sourcecontainer1",
"target_container":"target1"
},
{
"source_container":"sourcecontainer2",
"target_container":"target2"
}
]

为源和目标创建二进制数据集,创建时将这些数据集的文件路径保留为空。创建完成后,创建一个字符串类型的数据集参数

container_name
,并将其用于数据集中文件路径的容器名称中。

enter image description here

对目标二进制数据集执行相同的操作。

获取 For-Each 并将容器列表提供给它。在这里,在 for 循环内,我们需要两个复制活动。一个用于容器的文件夹,另一个用于容器根级别中的文件。

sourcecontainer
    folder1
    folder2 // One copy activity to copy these folders
    file1.csv
    file2.csv // Another copy activity to copy these files to the target container

在第一个复制活动中提供源和接收器数据集配置,如下所示。

来源:

enter image description here

水槽:

enter image description here

在第二个复制活动中,进行如下配置。

来源:

enter image description here

水槽:

enter image description here

现在,调试管道,它将给出所需的结果。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.