이 문서는 데이터 엔지니어링 섹션의 일부입니다.
왜 흐름 제어가 필요한가?
실제 데이터 파이프라인은 단순한 일직선이 아닙니다. “데이터 검증에 성공하면 Gold 테이블을 갱신하고, 실패하면 알림을 보내라”, “10개 테넌트에 대해 같은 처리를 반복하라” 같은 동적 흐름 제어 가 필요합니다. Lakeflow Jobs의 If/Else, For Each 태스크, 그리고 Task Values 를 활용하면 이러한 복잡한 워크플로를 구현할 수 있습니다.If/Else 태스크 (조건부 분기)
개념
If/Else 태스크는 조건 표현식의 결과에 따라 다른 태스크 분기를 실행 합니다. 별도의 컴퓨트 리소스를 사용하지 않으며, DAG의 흐름을 제어하는 역할만 합니다.조건 표현식
If/Else 태스크에서 사용할 수 있는 조건 표현식은 다음과 같습니다.YAML 설정 예제
지원되는 연산자
For Each 태스크 (반복 실행)
개념
For Each 태스크는 입력 리스트의 각 항목에 대해 중첩된 태스크를 반복 실행 합니다. 멀티 테넌트 처리, 파티션별 처리, 여러 테이블에 대한 동일 작업 등에 활용됩니다.YAML 설정 예제
입력 리스트 생성 노트북
For Each 태스크 설정 옵션
💡 concurrency 설정: 리소스에 여유가 있다면 concurrency를 높여 병렬 처리 속도를 높일 수 있습니다. 단, 하류 시스템의 부하를 고려하여 적절한 값을 설정하세요.
Task Values (태스크 간 값 전달)
개념
Task Values는 선행 태스크에서 계산한 결과를 후행 태스크로 전달하는 메커니즘입니다.dbutils.jobs.taskValues를 사용합니다.