Среда выполнения интеграции имеет два диска. Есть ли способ параметризовать поле Host в связанной файловой системе службы?
Я пытаюсь развернуть фабрику данных Azure с конвейером копирования данных, который извлекает файлы по одному или нескольким путям развернутой / локальной файловой системы и выгружает их в хранилище BLOB-объектов. Пути к исходным файлам в файловой системе могут охватывать несколько разных дисков (например, C:\fileshare1 vs D:\fileshare2) и могут включать сетевые местоположения, на которые ссылаются через пути UNC (например, - \localnetworkresource\fileshare3).
Я хотел бы настроить одно соединение с локальной файловой системой и набор исходных данных и просто параметризовать свойство хоста связанной службы. Тогда мой конвейер просто перебирает коллекцию путей к общим файлам и повторно использует набор данных и соединение связанной службы. Однако не похоже, что существует какой-либо способ заставить набор данных или конвейер предоставлять информацию о хосте связанной службе. Конечно, можно предоставить информацию о папке из конвейера и набора данных, но она будет связана с хостом, указанным в подключении связанной службы, и, следовательно, не позволит мне получить доступ к различным дискам или сетевым ресурсам.
Это было достаточно просто сделать, настроив отдельные связанные соединения служб, наборы данных и конвейеры для каждого отдельного файлового ресурса, который необходимо было включить, но я бы предпочел управлять одним конвейером.
Я уже пытался создать JSON связанных служб, но это не сработало. Кто-нибудь может мне помочь?
https://docs.microsoft.com/en-us/azure/data-factory/parameterize-linked-services
2 ответа
Да, вы можете параметризовать службу, связанную с файловой системой, следующим образом. Сначала вам нужно создать связанный сервис файловой системы, затем вы можете изменить код 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 и передать эти значения в действие Копировать -> Параметры набора данных источника / приемника -> Свойства параметров связанных служб.
Ниже приведен пример использования связанной службы параметризованной файловой системы.
Надеюсь это поможет.