Azure 数据工厂 - 检查是否存在任何 Zip 文件

Azure Data Factory - Check If Any Zip File Exists

我正在尝试检查我的 SFTP 文件夹中是否存在任何 zip 文件。 GetMetadata activity 如果我明确提供文件名就可以正常工作,但我不知道这里的文件名,因为文件名嵌入了动态的时间戳和序列号。

我试过指定 *.zip 但那永远行不通 GetMetadata activity 总是 returns false 即使 zip 文件确实存在。有什么方法可以使它起作用吗?请提建议。

示例文件名如下,最后一部分0000000004_20210907080426是动态的,每次都会改变:

TEST_TEST_9999_OK_TT_ENTITY_0000000004_20210907080426

对于SFTP数据集,如果要使用通配符过滤指定folderPath字段下的文件,则需要跳过此设置,在activity源设置中指定文件名(获取元数据 activity)。

但获取元数据 activity 不支持 folders/files 上的通配符筛选器。

您可以对文件夹执行获取元数据并将子项包含在字段列表下。

您必须使用表达式

对 ForEach 进行迭代
@activity('Get Folder Files').output.childItems

然后检查 item().name(在 ForEach 中)是否以“.zip”结尾。

我知道当通配符对给定数据集不起作用时会很痛苦,但这种替代方法应该适合您。

如果您使用的是 Get Metadata activity 中的 exists,您需要提供其中的文件名。

作为解决方法,您可以使用 Get Metadata activity.

获取子项(文件名为 *.zip)

输出:

将输出传递给 If Condition activity,以检查所需的 文件是否存在 .

@contains(string(json(string(activity('Get Metadata1').output.childItems))),'.zip')

您可以根据 If 条件在 TrueFalse 活动中使用其他活动。

如果 不存在文件Get Metadata activity 中找不到子项目。

如果条件输出: