我正在为数据工厂创建一个ARM模板。在管道中,我为每个数据集有两个活动:一个复制,一个删除。我有一个定义的数据集数组。
"variables": {
"datasets": ["foo", "bar", "boo", "far"]
}
我知道活动是属性,并且您可以根据文档遍历属性,但我似乎只能对一个活动执行此操作。
例如,我想对管道模板进行以下操作:
{
"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')]",
...
}
那个帮助?