#azure #azure-data-factory-2 #azure-data-factory-pipeline
Вопрос:
У меня в конвейере есть два действия по копированию. Первый выполняется нормально, а второй не удался. Когда я просматриваю выходные файлы для каждого из них для первого (успешного) Я вижу элемент «ошибки» следующим образом
"errors": [],
что нормально, так как никакой ошибки не произошло.
Для второго (который не удался) Я также вижу элемент «ошибки», но в этом есть элементы внутри следующим образом:
"errors": [
{
"Code": 9013,
"Message": "Some text - erased for the simplicity"
"EventType": 0,
"Category": 5,
"Data": {},
"MsgId": null,
"ExceptionType": null,
"Source": null,
"StackTrace": null,
"InnerEventInfos": []
}
],
Эти 2 действия связаны цепочкой «По завершении», и в конце есть действие IF, которое проверяет, есть ли ошибка для любого из действий копирования, и делает что-то, если на самом деле есть ошибка. Значение If True contition оценивается следующим образом (для второго действия)
@greaterOrEquals(length(activity('Second Copy Activity').output.errors),1)
Это работает нормально, то есть, если действие второго копирования не выполняется НОРМАЛЬНО, это вызовет действие при истинном условии в действии IF и что-то сделает. Если действие по второму копированию выполнено нормально, оно попадет под условие false в действии IF (что нормально) и будет что-то делать соответственно.
Мой вопрос связан с выражением @greaterOrEquals(length(activity('Second Copy Activity').output.errors),1)
, и что я на самом деле проверяю здесь — это длина массива, которую я проверяю, или длина строки? Поскольку для меня это работает нормально, я просто хочу быть уверенным, что сообщаю другим правильную логику. Конечно, если кто-то думает, что я должен сделать это по-другому (то есть настроить другое динамическое выражение), это более чем приветствуется.
Заранее спасибо. С уважением
Ответ №1:
Вы можете просто использовать функцию empty (), чтобы проверить, является ли элемент errors пустым или нет. Выражение:
@empty(activity('Second Copy Activity').output.errors)