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 条件在 True 和 False 活动中使用其他活动。
如果 不存在文件 或 Get Metadata
activity 中找不到子项目。
如果条件输出:
我正在尝试检查我的 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.
输出:
将输出传递给 If Condition
activity,以检查所需的 文件是否存在 .
@contains(string(json(string(activity('Get Metadata1').output.childItems))),'.zip')
您可以根据 If 条件在 True 和 False 活动中使用其他活动。
如果 不存在文件 或 Get Metadata
activity 中找不到子项目。
如果条件输出: