Рассмотрим следующий тест Mapping для операции копирования фабрики данных:
"translator": {
"columnMappings": "@json('{\"from\":\"to\"}')",
"type": "TabularTranslator"
}
После развертывания конвейера с помощью командлета Set-AzureRmDataFactoryV2Pipeline
PowerShell мы получаем нормально развернутый конвейер с точным значением columnMappings
, указанным в источникекод.Но если вы попытаетесь быть более динамичным:
"translator": {
"columnMappings": "@json(pipeline().parameters.Mapping)",
"type": "TabularTranslator"
}
, то после развертывания вы обнаружите, что элемент translator
полностью отсутствует в конвейере.Обходной путь - установите переводчик в пользовательском интерфейсе редактирования конвейера фабрики данных Azure Portal (в режимах Designer или JSON - оба варианта работают).Но если после этих манипуляций вы сохраните конвейерный JSON в файл и попытаетесь развернуть его с помощью Set-AzureRmDataFactoryV2Pipeline
PowerShell cmdlet - bang, translator
пропадет.Ожидаемый результат - при развертывании должен сохраняться элемент translator
, потому что редактор JSON портала сохраняет его.
Мы выполняем автоматическое развертывание конвейеров (как вы уже поняли - с помощью Set-AzureRmDataFactoryV2Pipeline
), и эта ошибка нарушает наше автоматическое развертывание, поскольку требует ручного редактирования конвейера после развертывания в пользовательском интерфейсе портала Azure.
В чем может быть причина такого глючного поведения?Можете ли вы предложить идею, как обойти эту ошибку автоматически или как исправить код, чтобы его можно было правильно развернуть с помощью Set-AzureRmDataFactoryV2Pipeline
?