在 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"
}
如果你想要关于如何做到这一点的一般建议,我有一篇关于如何从逻辑应用程序做到这一点的文章
- 来自逻辑应用程序 https://marczak.io/posts/2019/06/logic-apps-refresh-analysis-services/
- 来自数据工厂https://marczak.io/posts/2019/06/logic-app-vs-data-factory-for-aas-refresh/
如果您想了解有关逻辑应用程序的更多信息,请查看我关于逻辑应用程序的视频系列
完整代码供参考
{
"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"
}
}
}
}
我想在 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"
}
如果你想要关于如何做到这一点的一般建议,我有一篇关于如何从逻辑应用程序做到这一点的文章
- 来自逻辑应用程序 https://marczak.io/posts/2019/06/logic-apps-refresh-analysis-services/
- 来自数据工厂https://marczak.io/posts/2019/06/logic-app-vs-data-factory-for-aas-refresh/
如果您想了解有关逻辑应用程序的更多信息,请查看我关于逻辑应用程序的视频系列
完整代码供参考
{
"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"
}
}
}
}