Azure Logic App从Azure blob容器中动态获取Blob内容,无需在路径中保存文件名称

1 人关注

我正在使用Azure Logic应用程序从我的Azure容器中获取Blob内容。这些Blob每月都会以这样的格式存储在我的容器中:- 例如,mycontainer/invoice/20200101/invoice1.csv,mycontainer/invoice/20200201/invoice2.csv,如此等等。 换句话说,每个月的发票都被动态地存储在我的容器中,并有一个文件夹表示月份和日期,如图所示。(2020-01-01, yyyyMMdd格式)

到目前为止,我能够提取到在我的容器中创建的最新文件夹。但我希望能提取该文件夹中的最新文件。

我目前的工作流程如下:-

关于这个问题有什么建议吗? 有什么建议吗?

4 个评论
每个文件夹中只有一个文件?如 mycontainer/invoice/20200101/invoice1.csv , mycontainer/invoice/20200201/invoice2.csv ?还是每个文件夹里有多个文件,如 mycontainer/invoice/20200101/invoice1.csv , mycontainer/invoice/20200101/invoice2.csv , mycontainer/invoice/20200101/invoice3.csv ?
SD4
确切地说,只有一个文件。但在文件名上有一个唯一的名称。 像这样 -> mycontainer/invoice/20200101/BillingInvoice_c96d6c-497f-bb58-624237288cec.csv,mycontainer/invoice/20200201/BillingInvoice_d5lhk6-cd6c-49769-bb58-92002288cec.csv,像这样
好的,我将在我这边进行测试,然后在下面提供一个解决方案。但我想知道,文件夹名称 20200101 还是 20200101-20200131
SD4
是的@Hury,文件夹名称将是20200101-20200131,20200201-20200228,........ 20201001-20201031,20201101-20201130,等等。这将是文件夹名称的格式。每个月,第一个日期到最后一个日期,(yyyyMMdd格式)
azure
azure-storage
azure-blob-storage
azure-logic-apps
SD4
SD4
发布于 2020-10-23
2 个回答
Hury Shen
Hury Shen
发布于 2020-10-26
已采纳
0 人赞同

我提供了整个逻辑程序供你参考,大部分动作与你相同。

1. 逻辑应用程序的概述

2. 前三个动作

3. 第四和第五个行动

4. "For each "循环的细节

设置变量 "中的表达式为 int(substring(items('For_each')?['Name'], 0, 8)) "设置变量3 "中的表达式为 replace(items('For_each')?['Name'], '/', '')

5. 最后两个动作

"获取blob内容 "动作中的最后一个表达式是 body('List_blobs_2')?['value'][0]?['Name']

====================================Update =================================

1. 删除你的逻辑应用程序的最后一个动作 "获取blob内容 "。

2. 然后我们在 "List blobs 2 "这个动作之后开始。添加两个 "初始化变量 "。

3. 添加另一个 "For each "循环。 请注意 :从 "List blobs 2 "中选择 value 进入 "For each 2 ",而不是从 "List blobs "中选择 value 进入 "For each 2 "。

4. 4. "For each 2 "循环中的细节。

两个 fx ticks(...) 的表达式都是 ticks(items('For_each_2')?['LastModified'])

而在 "设置变量5 "中,也是从 "List blobs 2 "中选择 Name ,而不是从 "List blobs "中选择。

5. 然后添加 "获取blob内容 "的动作,如下面的屏幕截图。

6. 顺便说一下。请在运行你的逻辑应用之前,对你的逻辑应用中所有的 "For each "循环动作进行这一设置。否则,结果可能不正确。