使用逻辑应用将 n 个文件从 Azure Datalake 复制到 SFTP 位置

Copy n number of files from Azure Datalake to SFTP location using Logic Apps

我有一个场景-
我在 Azure Datalake 中有一些文件。一项工作正在将这些文件推送到 ADLS 位置。
此文件需要作为输入数据上传到 SFTP 位置。
应用程序将使用此输入文件并执行一些操作,然后将处理后的数据保存在输出目录中作为同一 SFTP 位置的输出文件。

借助逻辑应用程序,我想在 ADLS 位置上传此输出文件。

使用此输入文件的应用程序有一些限制 - 它一次不能使用超过 10000 条记录。 即,如果我的源文件有超过 10000 条记录,那么我必须将其拆分为多个文件(取决于行数),然后我必须将这些文件复制到 SFTP 位置。 这种复制必须以这样的方式执行,而不是在完成一个作业后才应在 SFTP 位置复制另一个文件。

将我要使用的文件上传到 Azure 逻辑应用程序。

根据我的理解,到目前为止,Azure 逻辑应用程序不提供任何触发器来测试“添加或修改的文件”ADLS 位置,但逻辑应用程序具有类似类型的功能blob 存储,所以我决定使用 blob 容器。
将原始文件上传到 ADLS 位置后,我会将文件上传到 blob 位置, 因为我的逻辑应用程序会不断轮询这个特定目录,所以只要有任何新文件立即到达,它就会通过逻辑应用程序触发文件复制作业。

现在的问题-
我的 ADLS 目录可能有一个或多个文件。
如何在逻辑应用程序中创建副本 activity 以将这些文件复制到 SFTP 位置。 我如何确定 ADLS 目录中有多少 csv 类型文件可用,以便我的逻辑应用程序决定复制文件的迭代次数。

提前致谢。

您可以在 ADLS 上使用列表文件操作..

此操作的输出记录在此处 - https://docs.microsoft.com/en-us/connectors/azuredatalake/#folderresponse

这基本上是一个 filestatus class 对象数组。您可以遍历此数组并从状态对象中提取信息,并使用它来将数据复制到您想要的任何位置..

FileStatus 有信息 -

TABLE 14 名称路径类型描述 文件名路径后缀字符串
文件或文件夹名称。

类型类型字符串
项目类型(目录或文件)。

块大小 blockSize 整数 文件夹或文件的块大小。

访问时间 accessTime 整数 上次访问项目的 Unix(纪元)时间。

修改时间modificationTime整数 上次修改项目的 Unix(纪元)时间。

示例 LA 看起来像 -