在 Azure 逻辑应用程序中生成动态内容

Generate dynamic content in azure logic app

我想在 azure logic APP 中为我的 HTTP 任务创建这样一个主体

{
  "CommitMode": "transactional",
  "MaxParallelism": 20,
  "Objects": [
    {
      "partition": "Table_2019-03-27",
      "table": "Table"
    },
     {
      "partition": "Table_2019-03-28",
      "table": "Table"
    },
    {
      "partition": "Table_2019-03-29",
      "table": "Table"
    }
  ],
  "RetryCount": 0,
  "Type": "Full"
}

我想自动生成正文部分,正如你所看到的只有 partition 是变化的,它是 Table_Date 的组合 你有什么想法吗我可以在 azure logic 应用程序中实现这样的东西吗?

1.If 您的数据已修复。您可以使用 Compose action 生成 json.

2.However,因为你需要通过计算得到需要的日期,而逻辑应用中没有直接的动作,我建议你创建一个函数应用来完成这项工作。您可以直接调用逻辑应用中的函数应用作为 tutorial

函数应用程序将接受日期,然后为您生成 json。然后您可以在您的逻辑应用程序中使用返回的 json。

您似乎正在尝试通过 REST 刷新 Azure Analysis Services API。

假设您定义了日期(或作为参数传递)

然后你为日期创建临时变量如下

现在您创建 until 循环,该循环迭代直到数组将具有您想要的天数长度。在本例中为 10,您可以将其作为参数传递。

您在这里看到的第一个表达式是

length(variables('Dates'))

追加到数组变量的表达式是

formatDateTime(addDays(variables('StartDate'), iterationIndexes('Until')),'yyyy-MM-dd')

然后简单地将正文创建为

这里的表达式是

concat('{"partition": "Table_',join(variables('Dates'), '","table": "Table"},{"partition": "Table_'),'","table": "Table"}')

你的输出看起来像

{
  "CommitMode": "transactional",
  "MaxParallelism": 20,
  "Objects": [
    {"partition": "Table_2019-03-27","table": "Table"},
    {"partition": "Table_2019-03-28","table": "Table"},
    {"partition": "Table_2019-03-29","table": "Table"},
    {"partition": "Table_2019-03-30","table": "Table"},
    {"partition": "Table_2019-03-31","table": "Table"},
    {"partition": "Table_2019-04-01","table": "Table"},
    {"partition": "Table_2019-04-02","table": "Table"},
    {"partition": "Table_2019-04-03","table": "Table"},
    {"partition": "Table_2019-04-04","table": "Table"},
    {"partition": "Table_2019-04-05","table": "Table"}
  ],
  "RetryCount": 0,
  "Type": "Full"
}

如果你想要关于如何做到这一点的一般建议,我有一篇关于如何从逻辑应用程序做到这一点的文章

如果您想了解有关逻辑应用程序的更多信息,请查看我关于逻辑应用程序的视频系列

完整代码供参考

{
  "definition": {
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "actions": {
      "Initialize_Body": {
        "inputs": {
          "variables": [
            {
              "name": "body",
              "type": "String",
              "value": "{\n  \"CommitMode\": \"transactional\",\n  \"MaxParallelism\": 20,\n  \"Objects\": [\n  @{concat('{\"partition\": \"Table_',join(variables('Dates'), '\",\"table\": \"Table\"},{\"partition\": \"Table_'),'\",\"table\": \"Table\"}')}\n  ],\n  \"RetryCount\": 0,\n  \"Type\": \"Full\"\n}"
            }
          ]
        },
        "runAfter": {
          "Until": [
            "Succeeded"
          ]
        },
        "type": "InitializeVariable"
      },
      "Initialize_Start_Date": {
        "inputs": {
          "variables": [
            {
              "name": "StartDate",
              "type": "String",
              "value": "2019-03-27"
            }
          ]
        },
        "runAfter": {},
        "type": "InitializeVariable"
      },
      "Initialize_variable": {
        "inputs": {
          "variables": [
            {
              "name": "Dates",
              "type": "Array",
              "value": []
            }
          ]
        },
        "runAfter": {
          "Initialize_Start_Date": [
            "Succeeded"
          ]
        },
        "type": "InitializeVariable"
      },
      "Until": {
        "actions": {
          "Append_to_array_variable": {
            "inputs": {
              "name": "Dates",
              "value": "@formatDateTime(addDays(variables('StartDate'), iterationIndexes('Until')),'yyyy-MM-dd')"
            },
            "runAfter": {},
            "type": "AppendToArrayVariable"
          }
        },
        "expression": "@equals(length(variables('Dates')), 10)",
        "limit": {
          "count": 60,
          "timeout": "PT1H"
        },
        "runAfter": {
          "Initialize_variable": [
            "Succeeded"
          ]
        },
        "type": "Until"
      }
    },
    "contentVersion": "1.0.0.0",
    "outputs": {},
    "parameters": {},
    "triggers": {
      "manual": {
        "inputs": {
          "schema": {}
        },
        "kind": "Http",
        "type": "Request"
      }
    }
  }
}