#azure-data-factory
#azure-data-factory
Вопрос:
Итак, у меня возникли некоторые проблемы с Azure Data Factory. У меня есть стандартный конвейер, в котором я пытаюсь реализовать webhook для последующих обратных вызовов, но тело сообщения webhook, похоже, не работает.
(Заранее: извините за URL-адреса изображений -> я недостаточно авторитетен, чтобы публиковать изображения)
Итак, вот что я ввел в «тело» службы Webhook: https://imagizer.imageshack.com/img922/3765/ApbiRN.jpg
Затем я проверяю, что шаблон выглядит правильно: https://imagizer.imageshack.com/img924/5448/vN82Vp.jpg
И, наконец, я отлаживаю конвейер только для того, чтобы найти это как вывод из веб-узла: https://imagizer.imageshack.com/img923/3697/AEDzOT.jpg
Как вы можете видеть, он откуда-то берет {«Ключ»:»Значение»}. Теперь я сохранил конвейер; Я опубликовал конвейер; я перезапустил ADF .. Все еще.
Итак, первая проблема заключается в том, что я не могу отправить тело, которое я хочу. Вторая проблема заключается в том, что я хотел бы параметризовать тело (когда это будет устранено):
{
"key1":"@{pipeline().parameters.param1}",
"key2":"@{pipeline().parameters.param2}",
"key3":"@{pipeline().parameters.param3}"
}
Я тоже не смог решить этот последний, так что, если какие-нибудь добрые души будут так добры.. премного благодарен!
Редактировать: кроме того, я не смог обнаружить «callBackUri», который обещает документация: https://learn.microsoft.com/en-us/azure/data-factory/control-flow-webhook-activity
Есть какие-либо идеи по этой проблеме?
Ответ №1:
Я пробовал много раз и, наконец, добился успеха.
В вашем случае вы можете использовать выражение следующим образом:
@json(concat(concat('{"key1":"',pipeline().parameters.param1,'",'),concat('"key2":"',pipeline().parameters.param2,'",'),concat('"key3":"',pipeline().parameters.param3,'"}')))
Результат выглядит следующим образом:
- Во-первых, нам нужно объединить строку запроса.
- Затем нам нужно использовать
@json()
для преобразования строкового типа в тип json.
Комментарии:
1. Спасибо, Джозеф. На следующее утро конвейер снова работал (принимая мои входные данные). Когда дело дошло до переменных, я обнаружил, что поведение WebHook по сравнению с Web отличается. На самом деле я отправляю вложенный dict (и список), т.е. {«var»:»test», «dict»: {«key1″:»val1»}, «список»:[«1″,»2»]} и слияние переменных list и dict в webhook бросилоошибки (например, @{pipeline().parameters.param1}), если в веб-крючке не указано «». В итоге вся строка была задана как переменная с помощью «Set Variable», а затем @json() — ввод переменной в сообщение Webhook.