使用Logic Apps将n个文件从Azure Datalake复制到SFTP位置

时间:2020-06-14 19:32:44

标签: azure azure-logic-apps azure-data-lake azure-cloud-services

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

在Logic Apps的帮助下,我想将此输出文件上传到ADLS位置。

使用此输入文件的应用程序有一些限制-一次最多不能使用10000条记录。 如果源文件的记录超过10000条,则必须将其拆分为多个文件(取决于行数),然后将这些文件复制到SFTP位置。 这种复制的执行方式必须要比完成一个作业之后只在SFTP位置复制另一个文件的方式进行。

要将我要使用的文件上传到Azure Logic应用。

根据我的理解,到目前为止,Azure Logic Apps并未提供任何触发器来测试“ 添加或修改的文件”的ADLS位置,但是Logic Apps具有与Blob存储类似的功能,所以我决定使用Blob容器。
将我的原始文件上传到ADLS位置后,我将文件上传到Blob位置, 因为我的Logic Apps会一直轮询该特定目录,所以每当新文件立即到达时,它将通过Logic Apps触发文件复制作业。

现在出现问题了
我的ADLS目录可能包含一个或多个文件。
如何在Logic Apps中创建复制活动,以将这些文件复制到SFTP位置。 如何确定ADLS目录中有多少 csv 类型文件,以便我的逻辑应用确定要复制文件的迭代次数。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在ADLS上使用“列表文件操作”。

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

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

FileStatus具有信息-

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

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

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

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

修改时间ModifyTime整数 上次修改项目的Unix(Epoch)时间。

样品LA看起来像-

enter image description here