迭代多个属性 ARM 模板
Iterate multiple properties ARM Template
我正在为数据工厂创建 ARM 模板。在管道中,每个数据集都有两个活动:一个复制,一个删除。我有一个定义的数据集数组。
"variables": {
"datasets": ["foo", "bar", "boo", "far"]
}
我知道活动是 属性 并且您可以根据 documentation 遍历属性,但似乎我只能对一个 activity 执行此操作.
例如,我想使用管道模板执行以下操作:
{
"name": "MyPipeline",
"type": "Microsoft.DataFactory/factories/pipelines",
"apiVersion": "2018-06-01",
"properties": {
"copy": [
{
"name": "activites",
"count": "[length(variables('datasets'))]",
"input": {
"name": "[concat('Copy ', variables('datasets')[copyIndex()])]",
"type": "Copy"
}
},
{
"name": "activites",
"count": "[length(variables('datasets'))]",
"input": {
"name": "[concat('Delete ', variables('datasets')[copyIndex()])]",
"type": "Delete"
}
},
]
}
}
理想情况下,这将产生具有以下活动的管道:
- 复制 foo,删除 foo
- 复制栏,删除栏
- 复制boo,删除boo
- 远复制,远删除
这当然行不通,因为我不能拥有两个同名属性“活动”。我也无法将复制输入设置为两个活动,因为它会使 JSON 格式错误。
任何有关如何实现此目的的帮助将不胜感激!
有几种方法可以做到这一点 - 本质上只是通过复制来遍历数组两次...这是一种方法:
"variables": {
"datasets": ["foo", "bar", "boo", "far"],
"bigDataset": "[concat(variables('datasets'), variables('datasets'))]",
"copy": [
{
"name": "activities",
"count": "[length(variables('bigDataset'))]",
"input": {
"name": "[concat(if(less(copyIndex('activities'), length(variables('datasets'))), 'Copy', 'Delete'), variables('bigDataset')[copyIndex('activities')])]",
"type": "[if(less(copyIndex('activities'), length(variables('datasets'))), 'Copy', 'Delete')]"
}
}
]
},
然后在您的资源上执行:
"properties": {
"activities": "[variables('activities')]",
...
}
有帮助吗?
我正在为数据工厂创建 ARM 模板。在管道中,每个数据集都有两个活动:一个复制,一个删除。我有一个定义的数据集数组。
"variables": {
"datasets": ["foo", "bar", "boo", "far"]
}
我知道活动是 属性 并且您可以根据 documentation 遍历属性,但似乎我只能对一个 activity 执行此操作.
例如,我想使用管道模板执行以下操作:
{
"name": "MyPipeline",
"type": "Microsoft.DataFactory/factories/pipelines",
"apiVersion": "2018-06-01",
"properties": {
"copy": [
{
"name": "activites",
"count": "[length(variables('datasets'))]",
"input": {
"name": "[concat('Copy ', variables('datasets')[copyIndex()])]",
"type": "Copy"
}
},
{
"name": "activites",
"count": "[length(variables('datasets'))]",
"input": {
"name": "[concat('Delete ', variables('datasets')[copyIndex()])]",
"type": "Delete"
}
},
]
}
}
理想情况下,这将产生具有以下活动的管道:
- 复制 foo,删除 foo
- 复制栏,删除栏
- 复制boo,删除boo
- 远复制,远删除
这当然行不通,因为我不能拥有两个同名属性“活动”。我也无法将复制输入设置为两个活动,因为它会使 JSON 格式错误。
任何有关如何实现此目的的帮助将不胜感激!
有几种方法可以做到这一点 - 本质上只是通过复制来遍历数组两次...这是一种方法:
"variables": {
"datasets": ["foo", "bar", "boo", "far"],
"bigDataset": "[concat(variables('datasets'), variables('datasets'))]",
"copy": [
{
"name": "activities",
"count": "[length(variables('bigDataset'))]",
"input": {
"name": "[concat(if(less(copyIndex('activities'), length(variables('datasets'))), 'Copy', 'Delete'), variables('bigDataset')[copyIndex('activities')])]",
"type": "[if(less(copyIndex('activities'), length(variables('datasets'))), 'Copy', 'Delete')]"
}
}
]
},
然后在您的资源上执行:
"properties": {
"activities": "[variables('activities')]",
...
}
有帮助吗?