← 학습 카테고리

Learn

dbt

11개 모듈 · 현재 4번째

dbt 모듈 4/11 dbt-learn-04

소스 프레시니스, 문서 사이트, Exposures

50 dbt Interview Questions for Data Engineers (Real Answers, 2026) — 미상 (데이터 엔지니어링 커리어 블로그, 2026) Section 2: Testing & Documentation, Q16-Q18 (pp.5-6)

이 모듈을 다 읽으면

  • 소스 프레시니스 체크의 설정 방법과 그것이 방지하는 실무 문제를 설명할 수 있다
  • dbt docs generate/serve가 만드는 산출물과 문서 유지보수의 함정을 설명할 수 있다
  • exposures가 리니지 그래프에서 담당하는 역할과 한계를 판단할 수 있다

소스 프레시니스는 원천 테이블이 최근에 갱신됐는지 loaded_at_field와 warn_after/error_after 임계값으로 검사해, dbt가 오래된 데이터를 변환해 잘못된 대시보드를 내보내는 것을 막는다. dbt docs generate/serve는 리니지 그래프와 컬럼 설명, 컴파일된 SQL을 담은 정적 문서 사이트를 만들며, exposures는 대시보드나 ML 모델 같은 다운스트림 소비자를 YAML로 선언해 리니지 그래프에 노출시킨다.

소스 프레시니스 체크

소스 프레시니스는 원천 테이블이 최근에 갱신됐는지 확인하는 기능이다. 소스 YAML에 loaded_at_field와 freshness 임계값을 정의한다 — 예를 들어 raw_payments 소스의 transactions 테이블에 loaded_at_field: _loaded_at, freshness에 warn_after: {count: 12, period: hour}, error_after: {count: 24, period: hour}를 설정한다. dbt source freshness 명령으로 검사를 실행하며, 가장 최근 _loaded_at이 임계값보다 오래됐으면 dbt가 경고하거나 에러를 낸다. 이는 dbt가 오래된 데이터를 변환해 outdated 대시보드를 내보내는 것을 방지하는데, 이는 의외로 흔한 프로덕션 이슈다.

핵심 포인트

  • 소스 YAML에 loaded_at_field와 warn_after/error_after 임계값을 정의해 프레시니스를 설정한다
  • dbt source freshness로 검사하며, 임계값을 넘기면 경고 또는 에러를 낸다
  • 프레시니스 체크는 변환이 시작되기 전에 상류 데이터가 오래됐음을 미리 알려 잘못된 대시보드 배포를 막는다

문서화와 Exposures

dbt docs generate를 실행하면 catalog.json과 manifest.json이 생성되고, 이 파일들이 인터랙티브한 정적 사이트를 구동한다. dbt docs serve는 이를 로컬에서 띄운다. 이 사이트에는 전체 리니지 그래프, (YAML에서 가져온) 컬럼 수준 설명, 모든 모델의 컴파일된 SQL이 포함된다. 팀들이 가장 흔히 저지르는 실수는 설명을 한 번만 쓰고 다시는 업데이트하지 않는 것이다 — 문서 업데이트를 PR 리뷰 프로세스의 일부로 다루는 것이 좋은 습관이다.

exposures는 dbt 모델의 다운스트림 소비자(대시보드, ML 모델, 리버스 ETL 잡 등)를 YAML로 선언하는 기능이다. 이들은 리니지 그래프에 나타나므로 팀이 fct_revenue가 CEO 대시보드에 공급된다는 사실을 한눈에 볼 수 있다. exposures가 없으면 누군가 fct_revenue를 리팩터링하면서 그것이 핵심 리포트를 깨뜨린다는 사실을 모를 수 있다는 게 중요한 이유다. exposures는 어디까지나 문서화이지 강제(enforcement)가 아니지만, 영향 분석(impact analysis)을 가능하게 해준다.

참고: dbt Cloud는 dbt Explorer라는 별도 웹 UI를 제공해, 로컬 dbt docs serve 없이도 컬럼 수준 리니지·잡 실행 이력·테스트 결과를 통합해 볼 수 있다. 이 블로그는 dbt Core 기준의 docs generate/serve만 다루므로, dbt Cloud를 쓰는 팀이라면 Explorer도 함께 알아두는 것이 좋다.

핵심 포인트

  • dbt docs generate가 catalog.json/manifest.json을 만들고, dbt docs serve가 리니지·컬럼 설명·컴파일된 SQL을 보여주는 사이트를 띄운다
  • 문서 설명을 한 번만 쓰고 방치하는 것이 가장 흔한 실수이며, PR 리뷰에 문서 업데이트를 포함시키는 것이 좋은 습관이다
  • exposures는 대시보드·ML 모델 등 다운스트림 소비자를 YAML로 선언해 리니지 그래프에 노출시키는 문서화 기능이다(강제력은 없다)
  • dbt Cloud는 로컬 docs 사이트 대신 dbt Explorer로 리니지·잡 이력·테스트 결과를 통합 제공한다