在 Azure 数据工厂中使用 @item().name 设置“复制数据”源文件夹

Posted

技术标签:

【中文标题】在 Azure 数据工厂中使用 @item().name 设置“复制数据”源文件夹【英文标题】:Set 'Copy Data' source folder with @item().name in Azure Data Factory 【发布时间】:2020-06-27 15:34:31 【问题描述】:

我有以下管道:

Get Metadata1 主要检索子项(这是文件夹的集合,即originalFolder1originalFolder2 等)。

在 ForEach1 活动中,我放置了复制数据活动。

定义源数据集时,我想使用检索到的文件夹名称作为路径。所以它会是这样的:staticFolder1/staticFolder2/originalFolder1.

我确实尝试在文件夹路径中使用staticFolder1/staticFolder2/@item().name,但它总是抛出错误file not found

我错过了什么吗?

【问题讨论】:

你是从哪里复制过来的,是存储账户吗? @BowmanZhu source 和 sink 都来自DataLake 【参考方案1】:

不幸的是,在 ADF 中你不能混合字符串和表达式,你只能有一个或另一个

你可以做的是:

@concat(variables('SourceFolderName'), '/', string(item().name) )

假设您有一个名为 SourceFolderName 的变量,如果您的源文件夹每天都不同,这将很有用;否则将其作为字符串

@concat('staticFolder1/staticFolder2/', string(item().name) )

然后您可以连接 ForEach 活动的项目以形成完整路径

【讨论】:

【参考方案2】:

@sowmen 提供的 cmets 是有意义的,但没有必要将 item().name 转换为字符串格式。

还有一个有趣的概念叫做字符串插值,它让我们的生活更轻松。请参阅下面适合您的方案的代码。希望对你有帮助:)

staticFolder1/staticFolder2/@item().name

【讨论】:

以上是关于在 Azure 数据工厂中使用 @item().name 设置“复制数据”源文件夹的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 数据工厂管道中处理 Null 值

将日期时间参数从管道传递到数据流源存储过程 Azure 数据工厂

如何在 Azure 数据工厂内拥有不同数量客户的不同环境中使用相同的管道?

有没有办法在 Azure 数据工厂中使用 cURL 命令?

如何使用 Azure 数据工厂管道创建容器?

将嵌套参数传递到 Azure 数据工厂