다음을 통해 공유


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 표시됩니다.

참고 항목

  • 오류를 처리하도록 구성된 작업은 조건이 충족되지 않은 것처럼 ExcludedRun if 표시됩니다. 제외된 작업은 건너뛰고 성공으로 처리됩니다.
  • 모든 작업 종속성이 제외되면 해당 조건에 관계없이 Run if 태스크도 제외됩니다.
  • 작업 실행을 취소하면 취소가 다운스트림 태스크를 통해 전파되고, 예를 들어 실패를 처리하는 조건이 있는 태스크 Run if 가 실행되어 작업 실행이 취소될 때 클린up 작업이 실행되는지 확인합니다.

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 수행합니다.

  1. 형식 드롭다운 메뉴에서 .를 선택합니다If/else condition.
  2. 첫 번째 조건 텍스트 상자에 평가할 피연산자를 입력합니다. 피연산자는 작업 또는 작업 매개 변수 변수 또는 작업 값을 참조할 수 있습니다.
  3. 드롭다운 메뉴에서 부울 연산자를 선택합니다.
  4. 두 번째 조건 텍스트 상자에 조건 평가 값을 입력합니다.

작업에 대한 종속성을 구성하려면 다음을 If/else condition 수행합니다.

  1. If/else condition DAG 보기에서 작업을 선택하고 + 작업 추가를 클릭합니다.
  2. 작업에 대한 세부 정보를 입력한 후 [의존 관계]를 클릭하고 작업의 이름이 If/else condition 어디에 있는지 <task-name> 선택합니다<task-name> (true).
  3. 조건 평가에 대해 반복합니다 false.

예를 들어 이름이 기본 process_records 이라는 bad_records값에 유효하지 않은 레코드 수를 포함하는 태스크가 있고 유효하지 않은 레코드를 찾을 수 있는지 여부에 따라 처리를 분기하려는 경우를 가정해 보겠습니다. 워크플로에 이 논리를 추가하려면 다음과 같은 {{tasks.process_records.values.bad_records}} > 0식을 사용하여 If/else condition 작업을 만들 수 있습니다. 그런 다음 조건의 결과에 따라 종속 작업을 추가할 수 있습니다.

작업이 포함된 If/else condition 작업의 실행이 완료되면 UI에서 작업 실행 세부 정보를 볼 때 식의 결과와 식 평가의 세부 정보를수 있습니다.