Azure数据工厂管道

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

我想为Azure blob conainters创建链接服务,其帐户信息来自Azure SQL数据库。由于条目和帐户信息的数量是动态的,因此我无法在Azure数据工厂的设置部分中定义Azure blob容器的链接服务。 Azure数据工厂中的链接服务可以直接动态创建吗?

azure azure-data-factory
3个回答
2
投票

不幸的是,在当前版本的ADF中这是不可能的。您只能使用函数来引用与管道执行相关的元素(执行日期/时间)。您无法使用其他数据源动态定义Blob名称。

您可以将数据工厂中的函数与上述系统变量一起用于以下目的:

  1. 指定数据选择查询(请参阅数据移动活动文章引用的连接器文章。调用数据工厂函数的语法是:$$用于数据选择查询以及活动和数据集中的其他属性。
  2. 使用活动输入集合中的数据工厂函数指定输入依赖项(请参阅上面的示例)。指定输入依赖关系表达式不需要$$。

从这里:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-functions-variables

这就是你目前用blob输入做的一切:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-azure-blob-connector

在您的情况下,我建议如果您可以重新定义输入blob以具有可以从执行管道的日期/时间派生的名称/文件夹,那么您可以获得该功能。

或者你可以有一个usql调用从sql获取信息,然后将blob移动到一个日期戳文件夹,然后管道可以接收。


0
投票

好吧,我认为通过将Powershell脚本与Data factory cmdlet和Azure函数相结合来运行它们是可能的。因此,PowerShell需要连接并从存储中获取schmas,创建数据集并部署它们,更改管道,设置pipline计划和添加/删除元素,然后恢复(或仅设置当天的管道启动)过程。但这需要相当多的工作。

但是现在预览的版本2中的数据工厂提供了更多选项,包括使用SSIS,因此可以解决该问题。


0
投票

我实际上是使用python sdk执行此操作,我不仅对链接服务执行此操作,而且对于每个Activity,我的所有元数据都存储在SQL Server表中(我称之为adf.Mapping),该表包含以下列:source_linked_service_name ,source_dataset,target_linked_service_name,target_dataset

创建链接服务所需的元数据存储在另一个表中,我只是通过使用linked_service_name得到这个,我有一个每天运行我的python脚本的计划任务,如果使用上面提到的库更改了某些内容,它会更新链接服务:

properties = SqlServerLinkedService(connection_string=connection_string,
                                                user_name=user_name,
                                                password=password,
                                                connect_via=ir_sql_server)

adf_client.adf_object.linked_services.create_or_update( resource_group_name=resource_group_name, factory_name=data_factory_name, linked_service_name=self.name, properties=properties)
logger.info('Created SQL Server linked service: ' + str(self.name))
© www.soinside.com 2019 - 2024. All rights reserved.