问题描述
我正在使用Azure逻辑应用程序从我的Azure容器中获取Blob内容。 Blob每月以以下格式存储在我的容器中: 例如。 mycontainer / invoice / 20200101 / invoice1.csv,mycontainer / invoice / 20200201 / invoice2.csv,依此类推。 换句话说,每个月的发票都通过示例中表示月份和日期的文件夹动态地存储在我的容器中。 (2020年1月1日,yyyyMMdd格式)
到目前为止,我已经能够提取在容器中创建的最新文件夹。在这种情况下,那是十月,因为我们在十月。但是我希望获取该文件夹中的最新文件。
我当前的工作流程如下:-
对此有何建议? 谢谢!
解决方法
我提供了完整的逻辑应用程序供您参考,大多数操作与您相同:
“ 设置变量”中的表达式为int(substring(items('For_each')?['Name'],8))
,而“ 设置变量3 ”中的表达式为replace(items('For_each')?['Name'],'/','')
“ 获取Blob内容”操作中的最后一个表达式是body('List_blobs_2')?['value'][0]?['Name']
==================================== 更新 === =============================
1。。删除逻辑应用程序的最后一项操作“ 获取Blob内容”。
2。。然后,我们在操作“ 列出Blob 2 ”之后开始。添加两个“ 初始化变量”。
3。。添加另一个“ 对于每个”循环。 请注意:从“ 列出blob 2 ”中的“ 每2个”中选择value
,但不要选择value
从“ 列出Blob ”到“ 每2 ”中。
两个fx ticks(...)
的表达式均为ticks(items('For_each_2')?['LastModified'])
在“ 设置变量5 ”中,还从“ 列表Blob 2 ”中选择Name
,而不是从“ 列表Blob ”。
5。。然后添加“ 获取blob内容”操作,如下面的屏幕截图所示。
6。。顺便说一句:在运行逻辑应用程序之前,请对逻辑应用程序中的所有“ 对于每个”循环操作进行此设置。否则,结果可能不正确。
单击“对于每个”操作的...
按钮,然后单击“设置”,启用Concurrency Control
并将Degree of Parallelism
设置为1
。
您可以从BLOB到Logic App运行事件网格触发器。一旦将新文件保存在BLOB中,它便可以将事件发布到事件网格,您的Logic App可以在其中订阅该事件,然后您就可以运行工作流。不必以这种方式进行循环,而是可以在每次保存文件时触发逻辑应用程序的工作流程。
从here了解有关事件网格的更多信息。