ADF — элемент «ошибки» в файле выходного действия — как он считывается и оценивается, если существует

#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)