0

我正在尝试部署一个带有复制数据管道的 azure 数据工厂,该管道从一个或多个已部署/本地文件系统路径中提取文件并将它们转储到 blob 存储中。文件系统上的源文件路径可能跨越多个不同的驱动器(例如 - C:\fileshare1 与 D:\fileshare2),并且可能包括通过 UNC 路径引用的网络位置(例如 - \localnetworkresource\fileshare3)。

我想配置一个本地文件系统连接和源数据集,并且只是参数化链接服务的主机属性。然后我的管道将遍历文件共享路径的集合并重用数据集和链接的服务连接。但是,看起来没有任何方法可以让数据集或管道向链接服务提供主机信息。当然可以提供来自管道和数据集的文件夹信息,但这将连接到链接服务连接中指定的主机,因此不允许我访问不同的驱动器或网络资源。

通过为需要包含的每个不同文件共享配置单独的链接服务连接、数据集和管道来做到这一点相当简单,但我更喜欢管理单个管道。

我已经尝试创建链接服务的 JSON 但它不起作用,有人可以帮助我吗?

https://docs.microsoft.com/en-us/azure/data-factory/parameterize-linked-services

4

2 回答 2

3

是的,您可以按如下方式参数化文件系统链接服务。首先您需要创建一个文件系统链接服务,然后您可以修改 JSON 代码以添加参数部分,如下所示:

{
    "name": "OnPremFileSystemLinkedService_Parameterized",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "type": "FileServer",
        "parameters": {
            "HostParameter": {
                "type": "string",
                "defaultValue": "C:\\[Folder]"
            },
            "userIDParameter": {
                "type": "string",
                "defaultValue": "DOMAIN\\USERNAME"
            }
        },
        "annotations": [],
        "typeProperties": {
            "host": "@{linkedService().HostParameter}",
            "userId": "@{linkedService().userIDParameter}",
            "encryptedCredential": "XXXXXXXXXXXencryptedKeyXXXXXXXXX"
        },
        "connectVia": {
            "referenceName": "MySelfHostedIR",
            "type": "IntegrationRuntimeReference"
        }
    }
}

在我的示例中,我只使用单个文件共享作为输入和复制活动。但是根据您的要求,您可以将 FileShare 集合列表传递给 ForEach 活动并遍历每个 FileShare 并将这些值传递给您的 Copy Activity -> Source/Sink Data set parameters -> Linked service parameters properties。

下面是一个关于如何使用参数化文件系统链接服务的示例

在此处输入图像描述

希望这可以帮助。

于 2020-04-10T03:37:27.993 回答
1

这就是我解决它的方法:)

配置如下:

于 2020-04-10T20:56:06.923 回答