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 个分支?提前致谢!

要执行您想要的操作,您需要在数组上使用 SKIPTAKE 函数将其拆分,以便您可以调用子流。

这是您需要采用的方法的示例。

仅供参考数据包大小可以是任何大小,它不需要是数组长度的完美划分

您的 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 变量传递给您的子流,它将并行处理该部分数据。

您应该能够将该概念应用于您自己的数据集。