Skip to main content
이 문서는 데이터 엔지니어링 섹션의 일부입니다.

왜 흐름 제어가 필요한가?

실제 데이터 파이프라인은 단순한 일직선이 아닙니다. “데이터 검증에 성공하면 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를 사용합니다.

값 설정 (선행 태스크)

값 읽기 (후행 태스크)

YAML에서 Task Values 참조


DAG 의존성 패턴

1. 선형 패턴 (Sequential)

2. 팬아웃/팬인 패턴 (Fan-out/Fan-in)

3. 조건부 패턴 (Conditional)


실전 예제: 멀티 테넌트 ETL 워크플로


정리


참고 링크