C.W.K.
Stream
Lesson 02 of 06 · published

Great Expectations — 팀 간 데이터 테스트

~12 min · validation, great-expectations, data-contracts

Level 0구경꾼
0 XP0/47 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

Pandera 의 무거운 사촌

Great Expectations (GX) 는 Pandera 보다 더 정교한 검증 framework. Pandera 가 inline 으로 쓰는 Python 라이브러리라면 GX 는 프로젝트야: CLI, config 디렉토리, JSON 으로 저장된 expectation suite, docs 렌더러, Airflow/dbt/Dagster 통합. 모양은 무겁고 보상은 expectation 이 first-class, version-controlled, 사람이 읽을 수 있는, 비-엔지니어가 review 가능한 산출물 된다는 거.

Pandera 보다 GX 고를 때

  • 비-엔지니어 (분석가, product, business stakeholder) 가 읽고 review 가능한 version-controlled 산출물로서의 데이터 contract 필요.
  • 자동 생성 data docs 원할 때 — 기대 schema, 최근 run 결과, 시간 따른 drift 보여주는 정적 사이트.
  • 이미 Airflow/Dagster 돌리고 있고 검증을 first-class operator/asset 으로 원할 때.
  • 데이터 at rest 검증 원할 때 — 스케줄에 Snowflake 테이블에 expectation 돌리기, DataFrame inline 만 아니라.

Pandera 면 충분할 때

파이프라인이 Python 안에 살고, 검증이 inline 에 머물고, 본인 팀이 유일 audience — Pandera 가 가벼운 답. 결정 트리: default 는 Pandera; expectation 이 코드베이스 떠나야 할 때 GX.

Code

코드 안 최소 Great Expectations 검증·python
import great_expectations as gx

context = gx.get_context()

# 즉석에서 Pandas data source
ds = context.sources.add_or_update_pandas('orders_ds')
asset = ds.add_dataframe_asset('orders', dataframe=raw_df)

# Expectation 몇 개 빌드
validator = context.get_validator(
    batch_request=asset.build_batch_request(),
    expectation_suite_name='orders.suite',
)

validator.expect_column_values_to_not_be_null('order_id')
validator.expect_column_values_to_be_unique('order_id')
validator.expect_column_values_to_match_regex('order_id', r'^O\d{6}$')
validator.expect_column_values_to_be_between('amount_usd', min_value=0, max_value=1_000_000)
validator.expect_column_values_to_be_in_set('status', ['pending', 'completed', 'cancelled'])

validator.save_expectation_suite()
result = validator.validate()
if not result['success']:
    raise RuntimeError('orders 가 expectation 실패')

External links

Exercise

시간과 의욕 있으면: 새 프로젝트에 Great Expectations 설치, great_expectations init 돌리고, 작은 DataFrame 으로 quickstart 따라가. Data docs 사이트 생성하고 브라우저로 열어. 연습 목표는 Pandera 와 무게 차이 느껴서 의도적으로 고를 수 있게 되는 거.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.