Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure data factory 迭代ARM模板的多个属性_Azure Data Factory_Azure Resource Manager_Azure Data Factory 2 - Fatal编程技术网

Azure data factory 迭代ARM模板的多个属性

Azure data factory 迭代ARM模板的多个属性,azure-data-factory,azure-resource-manager,azure-data-factory-2,Azure Data Factory,Azure Resource Manager,Azure Data Factory 2,我正在为数据工厂创建ARM模板。在管道中,每个数据集有两个活动:一个复制,一个删除。我有一个定义的数据集数组 "variables": { "datasets": ["foo", "bar", "boo", "far"] } 我知道活动是属性,您可以根据迭代属性,但似乎我只能对一个活动执行此操作 例如,我想对管道模板执行以下操作: { "name&quo

我正在为数据工厂创建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')]",
  ...
}

这有帮助吗?

我就是这么做的!谢谢您也可以以内联方式完成所有操作,但vars可能更易于读取资源定义。。。