我有一个场景-
我在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 类型文件,以便我的逻辑应用确定要复制文件的迭代次数。
谢谢。
答案 0 :(得分:0)
您可以在ADLS上使用“列表文件操作”。
此操作的输出在此处记录-https://docs.microsoft.com/en-us/connectors/azuredatalake/#folderresponse
这基本上是一个filestatus类对象的数组。您可以遍历该数组并从状态对象中提取信息,然后使用它将数据复制到您想要的任何位置。
FileStatus具有信息-
表14
名称路径类型描述
文件名路径后缀字符串
文件或文件夹名称。
类型类型字符串
项目类型(目录或文件)。
块大小块大小整数 文件夹或文件的块大小。
访问时间accessTime整数 上次访问该项目的Unix(Epoch)时间。
修改时间ModifyTime整数 上次修改项目的Unix(Epoch)时间。
样品LA看起来像-