azure - Azure 逻辑应用中的随机列表

标签 azure azure-logic-apps

是否可以仅使用逻辑应用中 WDL 的函数来随机化数组的元素?

最佳答案

假设您有从 1 到 10 的数组

enter image description here

您创建一个元素随机数组变量

first(variables('Array'))

enter image description here

以及临时值 (tempValue) 和临时数组 (temp)(在后续步骤中使用,因为不允许自引用)

enter image description here

然后你像这样创建until循环

enter image description here

直到条件为

equals(length(variables('Randomized')), length(variables('Array')))

计算数组中的随机索引tempValue(我们将在其中分割数组的随机索引)

rand(0,sub(length('Randomized'),1))

并通过在随机位置插入当前迭代值来组合新数组temp

union(
  take(
    variables('Randomized'),
    variables('tempInteger')
  ),
  array(variables('Array')[add(iterationIndexes('Until'),1)]),
  skip(
    variables('Randomized'),
    variables('tempInteger')
  )
)

在条件语句之后将随机变量设置为临时

最后一次迭代后,您将获得随机输入表

enter image description here

以及完整的代码示例

{
  "definition": {
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "actions": {
      "Init_Randomized_One_Element_Array": {
        "inputs": {
          "variables": [
            {
              "name": "Randomized",
              "type": "Array",
              "value": [
                "@first(variables('Array'))"
              ]
            }
          ]
        },
        "runAfter": {
          "Init_Unrandomized_Array": [
            "Succeeded"
          ]
        },
        "type": "InitializeVariable"
      },
      "Init_Randomized_Temp_Array": {
        "inputs": {
          "variables": [
            {
              "name": "temp",
              "type": "Array"
            }
          ]
        },
        "runAfter": {
          "Init_Randomized_One_Element_Array": [
            "Succeeded"
          ]
        },
        "type": "InitializeVariable"
      },
      "Init_Temp_Calculated_Value": {
        "inputs": {
          "variables": [
            {
              "name": "tempInteger",
              "type": "integer"
            }
          ]
        },
        "runAfter": {
          "Init_Randomized_Temp_Array": [
            "Succeeded"
          ]
        },
        "type": "InitializeVariable"
      },
      "Init_Unrandomized_Array": {
        "inputs": {
          "variables": [
            {
              "name": "Array",
              "type": "Array",
              "value": [
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10
              ]
            }
          ]
        },
        "runAfter": {},
        "type": "InitializeVariable"
      },
      "Until": {
        "actions": {
          "Add_random_element_to_temp_array": {
            "inputs": {
              "name": "temp",
              "value": "@union(\r\n\ttake(\r\n\t\t   variables('Randomized'),\r\n\t\t   variables('tempInteger')\r\n\t),\r\n\tarray(variables('Array')[add(iterationIndexes('Until'),1)]),\r\n\tskip(\r\n\t   variables('Randomized'),\r\n\t   variables('tempInteger')\r\n\t)\r\n)\r\n"
            },
            "runAfter": {
              "Random_Index_to_insert": [
                "Succeeded"
              ]
            },
            "type": "SetVariable"
          },
          "Random_Index_to_insert": {
            "inputs": {
              "name": "tempInteger",
              "value": "@rand(0,sub(length('Randomized'),1))"
            },
            "runAfter": {},
            "type": "SetVariable"
          },
          "Set_randomized_from_temp": {
            "inputs": {
              "name": "Randomized",
              "value": "@variables('temp')"
            },
            "runAfter": {
              "Add_random_element_to_temp_array": [
                "Succeeded"
              ]
            },
            "type": "SetVariable"
          }
        },
        "expression": "@equals(length(variables('Randomized')), length(variables('Array')))",
        "limit": {
          "count": 60,
          "timeout": "PT1H"
        },
        "runAfter": {
          "Init_Temp_Calculated_Value": [
            "Succeeded"
          ]
        },
        "type": "Until"
      }
    },
    "contentVersion": "1.0.0.0",
    "outputs": {},
    "parameters": {},
    "triggers": {
      "manual": {
        "inputs": {
          "schema": {}
        },
        "kind": "Http",
        "type": "Request"
      }
    }
  }
}

关于azure - Azure 逻辑应用中的随机列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824794/

相关文章:

azure - Dot.Net Core 中的 Azure blob 容器中的软删除 blob 文件

sql-server - 来自 SQL Azure 的 BACPAC 导入时出错

azure - 在 Azure VM 上访问互联网

azure-cosmosdb - 通过逻辑应用程序在 Cosmos DB 中创建文档,并且文档和标题中的 PartitionKey 不匹配

azure - 配置 "When a new email arrives (V3)"触发器以根据“发件人”字段中的特定单词或域进行过滤

azure - 用于查询某个范围内的值的表存储设计

node.js - 从 webjob 调用 webapp 中的 API

Azure逻辑应用程序不为Google工作表中的每个实例插入一行

Azure 逻辑应用程序 - Webhook "stuck"处于运行状态

azure - 如何在azure上设计微服务系统并使用工作流程按顺序调用它们