将 Azure 数据工厂 SFTP 数据复制到 ADLS

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

我正在尝试使用元数据活动,以便我希望能够根据last_modified_timestamp参数获取所有文件,并根据此输出,我应该能够将数据复制到ADLS。

下面是SFTP服务器中的目录结构。根路径本身中有文件,还有一堆子目录,我想捕获所有 csv 文件,zip 文件,任何文件格式。

rootpath/
        test.csv
        test1.csv
        
rootpath/
        dir1/
            test2.csv
            test3.zip
rootpath/
        dir2/
            dir3/
                test4.csv
                test5.csv
                test6.zip

我尝试使用通配符路径来捕获从我定义的数据集中的根路径开始的所有可能的文件。

rootpath/**/**/**

但是,这并没有给出根路径中的文件的输出,即 test.csvtest1.csv

有没有一种动态且高效的方式来做到这一点? 我看到一些关于使用 forEach 活动的帖子,但似乎有点矫枉过正..

我想要的输出示例如下。

"childItems": [
        {
            "name": "test.csv",
            "type": "File"
        },
        {
            "name": "test1.csv",
            "type": "File"
        },
        {
            "name": "test2.csv",
            "type": "File"
        },
        {
            "name": "test3.zip",
            "type": "File"
        },

...

        {
            "name": "test6.zip",
            "type": "File"
        },

azure azure-data-factory
1个回答
0
投票

在天蓝色数据工厂中,如果您想要嵌套文件夹子树的任何级别中包含的所有文件,则递归元数据是不可能的。 getmetadata 的输出仅包含指定路径中的文件,以获取您需要在 getmetadata 值的输出目录上进行迭代的嵌套值。通过这种方式使用 foreach 循环,您可以达到 1 级深度。

@Richard Swinbank 此处在 Azure 数据工厂中递归获取元数据文档讨论了使用直到循环和一些变量来解决相同情况的解决方法。

然后您可以使用这些路径通过获取元数据活动进一步获取

last_modified_timestamp

© www.soinside.com 2019 - 2024. All rights reserved.