Power Automate Flow - 在 50 个并行分支中处理 JSON 输出
Power Automate Flow - Process JSON Output in 50 Parallel Branches
我有一个具有以下架构的 JSON:
"invoices-report": {
"locations": {
"location": {
"@code": "TX",
"@name": "Texas",
"invoices": {
"invoice": [
{
"@InvoiceNumber": "111111",
"@AccountName": "Name",
"@InvoiceDate": "2021-11-01",
"items": {
"item": [
{
"@QTY": "1.00",
"@Rate": "5",
"@Description": "Services"
},
{
"@QTY": "2.00",
"@Rate": "5",
"@Description": "Services1"
},
…
{
"@QTY": "2.00",
"@Rate": "5",
"@Description": "ServicesN"
},
}
]
}
},
{
"@InvoiceNumber": "222222",
"@AccountName": "Name2",
"@InvoiceDate": "2021-11-01",
"items": { …..}
基本上我有一个发票编号数组和发票详细信息的子数组。我想将它拆分为 50 个并行分支以加快处理速度。我的流程如下所示:
解析Json ->
创建变量 ->
length(array(body('Parse_JSON')?['invoices-report']?['locations']?['location']?['invoices']?['invoice']))
例如,变量returns 56,900 发票。我想根据数组订单号创建 50 个分支 ->56,900/50=1,138 -> 如果发票订单号为 0 - 1,138 - 在第一个分支中处理这些发票,依此类推。每个分支还将包含并行度为 50 的“应用于每个”函数。您能否解释一下如何将数组划分为 50 个分支?提前致谢!
要执行您想要的操作,您需要在数组上使用 SKIP
和 TAKE
函数将其拆分,以便您可以调用子流。
这是您需要采用的方法的示例。
仅供参考,数据包大小可以是任何大小,它不需要是数组长度的完美划分。
您的 Do Until
循环应该处理直到切片器的位置到达数组的末尾。
这是 Do Until 条件右侧的表达式... length(variables('Array'))
这是Skip/Take表达式...take(skip(variables('Array'), variables('Slicer Position')), variables('Packet Size'))
https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#skip
https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#take
因此,当它运行时,您可以将 Sub Array
变量传递给您的子流,它将并行处理该部分数据。
您应该能够将该概念应用于您自己的数据集。
我有一个具有以下架构的 JSON:
"invoices-report": {
"locations": {
"location": {
"@code": "TX",
"@name": "Texas",
"invoices": {
"invoice": [
{
"@InvoiceNumber": "111111",
"@AccountName": "Name",
"@InvoiceDate": "2021-11-01",
"items": {
"item": [
{
"@QTY": "1.00",
"@Rate": "5",
"@Description": "Services"
},
{
"@QTY": "2.00",
"@Rate": "5",
"@Description": "Services1"
},
…
{
"@QTY": "2.00",
"@Rate": "5",
"@Description": "ServicesN"
},
}
]
}
},
{
"@InvoiceNumber": "222222",
"@AccountName": "Name2",
"@InvoiceDate": "2021-11-01",
"items": { …..}
基本上我有一个发票编号数组和发票详细信息的子数组。我想将它拆分为 50 个并行分支以加快处理速度。我的流程如下所示:
解析Json -> 创建变量 ->
length(array(body('Parse_JSON')?['invoices-report']?['locations']?['location']?['invoices']?['invoice']))
例如,变量returns 56,900 发票。我想根据数组订单号创建 50 个分支 ->56,900/50=1,138 -> 如果发票订单号为 0 - 1,138 - 在第一个分支中处理这些发票,依此类推。每个分支还将包含并行度为 50 的“应用于每个”函数。您能否解释一下如何将数组划分为 50 个分支?提前致谢!
要执行您想要的操作,您需要在数组上使用 SKIP
和 TAKE
函数将其拆分,以便您可以调用子流。
这是您需要采用的方法的示例。
仅供参考,数据包大小可以是任何大小,它不需要是数组长度的完美划分。
您的 Do Until
循环应该处理直到切片器的位置到达数组的末尾。
这是 Do Until 条件右侧的表达式... length(variables('Array'))
这是Skip/Take表达式...take(skip(variables('Array'), variables('Slicer Position')), variables('Packet Size'))
https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#skip https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#take
因此,当它运行时,您可以将 Sub Array
变量传递给您的子流,它将并行处理该部分数据。
您应该能够将该概念应用于您自己的数据集。