【问题标题】:Getting zip and non-zipped files from ftp site via Azure Data Factory - unzipping通过 Azure 数据工厂从 ftp 站点获取 zip 和非压缩文件 - 解压缩
【发布时间】:2023-05-13 04:07:01
【问题描述】:

我通过 Azure 数据工厂成功地从 ftp 站点获取文件并在此过程中解压缩它们。我正在为 ZipDeflate 设置源数据集。但是,现在我有一个类似的管道,我必须从一个 ftp 站点获取文件,该站点混合了 .zip 文件和其他文件类型,如 .csv 和 .xls。

当我尝试对该 Copy 活动执行 ZipDeflate 时,它​​想要“放气”所有文件(不仅仅是 .zip)。我有点期待。我在想,唯一想解压缩 .zip 文件而不解压缩 .xls 和 .csv 文件的方法是在单独的复制活动中执行它们(一个用于需要解压缩的文件,一个用于所有其他文件)....这是是的,还是有另一种方法可以在一个活动中完成所有操作?

谢谢!! J

【问题讨论】:

    标签: azure unzip azure-data-factory


    【解决方案1】:

    嗯,是的。您需要有两个复制活动。但在这种情况下,我猜你将有两个具有不同文件过滤器的源数据集。 (一个用于 .zip,第二个用于所有其他文件) 我想到的是使用元数据活动来获取文件名。之后,在 IF 条件下检查文件名是否包含“.zip”,继续进行解压缩活动,如果为假,则继续进行活动而不解压缩。这样,您只使用一个数据集来收集所有文件,而不是单独拥有。 希望这可以工作并帮助你。 :)

    https://docs.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity

    【讨论】:

    • 完美。这正是我的想法,但我没有考虑元数据选项!那也可能会奏效。非常感谢!
    • 是的,您可以重复使用一个源数据集。没问题。如果这对您有任何帮助,请不要忘记给答案投票:)
    【解决方案2】:

    目前,您可以使用 GetMetadata+Filter 活动按类型拆分文件并为它们创建单独的复制活动。或者您可以参数化数据集,并根据文件的扩展名传递 Zip 方法,如“ZipDeflate”或“None”。

    如果我们谈论的不仅仅是原生机制,您还可以创建一个自定义的 .Net 活动并创建任何您想要的东西。

    【讨论】:

      最近更新 更多