이번 강은 파이프라인을 선언형으로 만드는 Delta Live Tables(DLT)를 다룬다.
DLT는 "무엇을 만들지"만 선언하면 실행 순서·재시도·스케일을 자동으로 관리한다. 데이터 품질 규칙도 내장한다.
이 강의 목표는 다음과 같다.
- LIVE TABLE과 STREAMING LIVE TABLE을 구분한다.
- Expectations로 데이터 품질을 강제한다.
- DLT가 의존성을 자동 관리하는 방식을 이해한다.
1. 선언형 파이프라인
DLT에서는 각 테이블을 쿼리로 선언한다. 테이블이 서로를 참조하면 DLT가 의존성 그래프(DAG)를 자동으로 구성해 순서대로 실행한다.
CREATE STREAMING LIVE TABLE bronze
AS SELECT * FROM cloud_files('/data/raw', 'json');
CREATE LIVE TABLE silver
AS SELECT * FROM LIVE.bronze WHERE id IS NOT NULL;
- STREAMING LIVE TABLE: 증분(스트리밍)으로 처리. 주로 Bronze 적재.
- LIVE TABLE: 매 실행 시 전체를 다시 계산(정합성 위주). 주로 Silver·Gold.
2. Expectations — 데이터 품질
제약을 선언해 품질을 강제하고, 위반 건을 처리한다.
CREATE STREAMING LIVE TABLE silver
(CONSTRAINT valid_id EXPECT (id IS NOT NULL) ON VIOLATION DROP ROW)
AS SELECT * FROM STREAM(LIVE.bronze);
| ON VIOLATION | 동작 |
|---|---|
| (없음) | 통과시키되 위반 건수 기록 |
| DROP ROW | 위반 행 제거 |
| FAIL UPDATE | 파이프라인 실패 처리 |
3. 자동 오케스트레이션
- 의존성·실행 순서를 직접 짜지 않는다.
- 재시도·에러 처리·오토스케일을 DLT가 관리한다.
- 파이프라인 UI에서 각 테이블의 품질 지표와 계보를 본다.
예제
예제) Bronze에서 들어온 데이터 중 id가 없는 불량 레코드를 Silver로 넘기지 않으려면?
해설) Silver를 STREAMING LIVE TABLE로 정의하고 EXPECT (id IS NOT NULL) ON VIOLATION DROP ROW 제약을 건다. id가 없는 행은 자동으로 걸러지고, 위반 건수는 파이프라인 지표로 집계되어 품질을 모니터링할 수 있다.
샘플 문제
문) DLT에서 위반 시 해당 행을 버리되 파이프라인은 계속 돌게 하려면 어떤 절을 쓰나?
- (A) ON VIOLATION FAIL UPDATE
- (B) ON VIOLATION DROP ROW
- (C) 제약 없이 EXPECT만
- (D) VACUUM
정답: (B). DROP ROW는 위반 행만 제거하고 파이프라인은 계속 실행한다. FAIL UPDATE는 파이프라인을 실패시키고, 절이 없으면 통과시키되 집계만 한다.
정리
- DLT는 선언형으로 테이블을 정의하고 의존성 DAG를 자동 구성한다.
- STREAMING LIVE(증분) vs LIVE(전체 재계산)를 구분한다.
- Expectations로 품질을 강제하고 위반 건을 처리(집계·DROP·FAIL).
- 재시도·스케일·계보를 DLT가 자동 관리한다.
다음 강에서는 이 파이프라인을 운영하는 Job과 거버넌스를 다룬다.
댓글 0
댓글은 운영자만 작성할 수 있어요.