이 문서는 데이터 엔지니어링 섹션의 일부입니다.
왜 데이터 품질 관리가 필요한가?
데이터 파이프라인에서 가장 흔한 문제는 **“Garbage In, Garbage Out”**입니다. 소스 데이터에 결측값, 잘못된 형식, 비즈니스 규칙 위반 등이 포함되면, 이를 기반으로 만들어진 리포트와 ML 모델의 결과도 신뢰할 수 없게 됩니다.💡 전통적으로 데이터 품질 검증은 파이프라인 코드 곳곳에if문이나filter()로직을 수동으로 삽입해야 했습니다. 이 방식은 유지보수가 어렵고, 품질 규칙의 전체 현황을 한눈에 파악하기 어렵습니다. SDP의 Expectations 는 이 문제를 선언적(Declarative) 으로 해결합니다.
Expectations란?
Expectations 는 SDP(Spark Declarative Pipelines)에서 데이터 품질 규칙을 선언적으로 정의하는 기능입니다. SQL의CONSTRAINT처럼 테이블 정의에 품질 규칙을 직접 명시하며, 각 규칙에 대해 부적합 데이터를 어떻게 처리할지(경고, 삭제, 파이프라인 중지)를 지정할 수 있습니다.
핵심 특징
위반 처리 방식 3가지
Expectations는 데이터 품질 위반 시 세 가지 행동 을 지원합니다. 비즈니스 요구사항에 따라 규칙별로 다르게 설정할 수 있습니다.상세 비교
⚠️ FAIL UPDATE 사용 시 주의: 파이프라인이 중지되면 해당 업데이트의 모든 테이블 갱신이 중단됩니다. 복구하려면 문제 데이터를 수정한 후 파이프라인을 다시 실행해야 합니다.
동작 흐름 비교
위반 처리 모드별 동작 비교Expectation 정의 문법
SQL 문법
SQL에서는CREATE OR REFRESH STREAMING TABLE 또는 CREATE OR REFRESH MATERIALIZED VIEW 정의 안에 CONSTRAINT 절로 Expectation을 선언합니다.
💡 ON VIOLATION WARN은 기본값이므로, 생략하면 자동으로 WARN이 적용됩니다. 명시적으로 작성하는 것이 가독성에 좋습니다.
Python 문법
Python에서는@dlt.expect, @dlt.expect_or_drop, @dlt.expect_or_fail 데코레이터를 사용합니다.