Выполнение задач условно в задании Azure Databricks
По умолчанию задача задания выполняется при выполнении зависимостей и успешном выполнении всех задач, но вы также можете настроить задачи в задании Azure Databricks, чтобы выполняться только в случае выполнения определенных условий. Задания Azure Databricks поддерживают следующие методы выполнения задач условно:
- Можно указать запуск, если зависимости для выполнения задачи зависят от состояния выполнения зависимостей задачи. Например, можно использовать
Run if
для запуска задачи даже при сбое некоторых или всех зависимостей, что позволяет заданию восстановиться после сбоев и продолжить выполнение. - Задача условия If/else используется для выполнения части задания DAG на основе результатов логического выражения. Задача
If/else condition
позволяет добавить логику ветвления в задание. Например, выполнение задач преобразования только в том случае, если задача приема вышестоящей передачи добавляет новые данные. В противном случае выполните задачи обработки данных.
Run if
Добавление условия задачи
Условие можно настроить Run if
при изменении задачи с одним или несколькими зависимостями. Чтобы добавить условие в задачу, выберите условие в раскрывающемся меню "Запуск" в раскрывающемся меню зависимостей в конфигурации задачи. Условие Run if
вычисляется после завершения всех зависимостей задач. Можно также добавить условие при добавлении Run if
новой задачи с одной или несколькими зависимостями.
Run if
Параметры условия
В задачу можно добавить следующие Run if
условия:
- Все успешно: все зависимости выполняются и успешно выполнены. Это условие по умолчанию для выполнения задачи. Задача помечена как
Upstream failed
если условие не удается выполнить. - По крайней мере один успешно выполнен: по крайней мере одна зависимость успешно выполнена. Задача помечена как
Upstream failed
если условие не удается выполнить. - Не удалось выполнить ни одну из зависимостей: не удалось выполнить по крайней мере одну зависимость. Задача помечена как
Upstream failed
если условие не удается выполнить. - Все готово: задача выполняется после выполнения всех зависимостей независимо от состояния зависимых запусков. Это условие позволяет определить задачу, которая выполняется без зависимости от результата зависимых задач.
- По крайней мере один сбой: по крайней мере одна зависимость завершилась ошибкой. Задача помечена как
Excluded
если условие не удается выполнить. - Все сбои: все зависимости завершились сбоем. Задача помечена как
Excluded
если условие не удается выполнить.
Примечание.
- Задачи, настроенные для обработки сбоев, помечаются так, как
Excluded
если ихRun if
условие не соответствует. Исключенные задачи пропускаются и рассматриваются как успешные. - Если все зависимости задач исключены, задача также исключается независимо от его
Run if
условия. - При отмене выполнения задачи отмена распространяется через подчиненные задачи и задачи с
Run if
условием, которое обрабатывает сбой, например, чтобы проверить выполнение задачи очистки при отмене выполнения задачи.
Как задания Azure Databricks определяют состояние выполнения задания?
Задания Azure Databricks определяют успешность выполнения задания на основе результатов конечных задач задания. Конечная задача — это задача, которая не имеет подчиненных зависимостей. Выполнение задания может иметь один из трех результатов:
- Выполнено: все задачи были успешными.
- Успешно выполнено сбоями: некоторые задачи завершились сбоем, но все конечные задачи были успешными.
- Сбой: сбой одной или нескольких конечных задач.
Добавление логики ветвления в задание с задачей If/else condition
If/else condition
Используйте задачу для запуска части daG задания на основе логического выражения. Выражение состоит из логического оператора и пары операндов, где операнды могут ссылаться на задание или состояние задачи с помощью переменных задания и параметра задачи или использовать значения задач.
Примечание.
- Числовые и нечисловые значения обрабатываются по-разному в зависимости от логического оператора:
!=
Операторы==
выполняют сравнение строк операндов. Например,12.0 == 12
значение false.>=
Операторы>
и<=
операторы выполняют числовые сравнения операндов. Например,12.0 >= 12
вычисляется значение true и10.0 >= 12
вычисляется значение false.- Допустимы только числовые, строковые и логические значения при ссылке на значения задач в операнде. Любые другие типы могут привести к сбою выражения условия. Нечисловые типы значений сериализуются в строки и обрабатываются как строки в
If/else condition
выражениях. Например, если для значения задачи задано логическое значение, сериализуется в"true"
или"false"
.
Вы можете добавить If/else condition
задачу при создании задания или изменении задачи в существующем задании. Чтобы настроить задачу, выполните приведенные If/else condition
действия.
- В раскрывающемся меню "Тип" выберите
If/else condition
. - В первом текстовом поле условия введите операнду для оценки. Операнды могут ссылаться на переменную задания или параметра задачи или значение задачи.
- Выберите логический оператор в раскрывающемся меню.
- Во втором текстовом поле Условия введите значение для оценки условия.
Чтобы настроить зависимости для If/else condition
задачи, выполните следующие действия.
- Выберите задачу в представлении
If/else condition
DAG и нажмите кнопку +Добавить задачу. - После ввода сведений о задаче нажмите кнопку "Зависит" и выберите
<task-name> (true)
, где<task-name>
находится имяIf/else condition
задачи. - Повторите для условия, в который оценивается
false
значение .
Например, предположим, что у вас есть задача с именем process_records
, которая поддерживает количество записей, недопустимых в именованном bad_records
значении, и вы хотите ветвить обработку на основе того, найдены ли недопустимые записи. Чтобы добавить эту логику в рабочий If/else condition
процесс, можно создать задачу с таким выражением, как {{tasks.process_records.values.bad_records}} > 0
. Затем можно добавить зависимые задачи на основе результатов условия.
После выполнения задания, содержащего If/else condition
задачу, можно просмотреть результат выражения и подробные сведения об оценке выражений при просмотре сведений о выполнении задания в пользовательском интерфейсе.