터칭 데이터
DBT Tests, Documentation, Expectations 본문
Contents
1. ELT의 미래는?
2. Database Normalization
3. dbt 소개
4. dbt 사용 시나리오
5. dbt 설치와 환경 설정
6. dbt Models: Input
7. dbt Models: Output
8. dbt Seeds
9. dbt Sources
10. dbt Snapshots
11. dbt Tests
12. dbt Documentation
13. dbt Expectations
14. 마무리
dbt Tests
dbt Tests란 무엇인가?
Tests 소개
데이터 품질을 테스트하는 방법
두 가지가 존재
내장 일반 테스트 (“Generic”)
- unique, not_null, accepted_values, relationships 등의 테스트 지원
- models 폴더
커스텀 테스트 (“Singular”)
- 기본적으로 SELECT로 간단하며 결과가 리턴되면 “실패”로 간주
- tests 폴더
Generic Tests 구현
models/schema.yml 파일 생성
version: 2
models:
- name: dim_user_metadata
columns:
- name: user_id
tests:
- unique
- not_null
Generic Tests 실행
dbt test로 테스트 실행
Singular Tests 구현
tests/dim_user_metadata.sql 파일 생성
Primary Key Uniqueness 테스트
SELECT
*
FROM (
SELECT
user_id, COUNT(1) cnt
FROM
{{ ref("dim_user_metadata") }}
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
)
WHERE cnt > 1
Singular Tests 실행
dbt test로 테스트 실행
하나의 테이블 대상으로 실행해보기
dbt test --select dim_user_metadata
만일 디버깅하고 싶다면 dbt --debug test --select dim_user_metadata
dbt Documentation
dbt Documentation이란 무엇인가?
dbt 문서화 소개
기본 철학은 문서와 소스 코드를 최대한 가깝게 배치하자는 것
문서화 자체는 두 가지 방법이 존재
기존 .yml 파일에 문서화 추가 (선호되는 방식)
독립적인 markdown 파일 생성
이를 경량 웹서버로 서빙
overview.md가 기본 홈페이지가 됨
이미지등의 asset 추가도 가능
models 문서화 하기
description 키를 추가: models/schema.yml, models/sources.yml
version: 2
models:
- name: dim_user_metadata
description: A dimension table with user metadata
columns:
- name: user_id
description: The primary key of the table
tests:
- unique
- not_null
models 문서 만들기
dbt docs generate
사용자 권한이 더 있다면 Redshift로부터 더 많은 정보를 가져다가 보여줌
결과 파일은 target/catalog.json 파일이 됨
models 문서 보기
dbt docs serve로 웹서버 띄우기
Lineage Graph 확인해보기
dbt Expectations
dbt Expectations이란 무엇인가?
dbt Expectations 소개
Great Expectations에서 영감을 받아 dbt용으로 만든 dbt 확장판
https://github.com/calogica/dbt-expectations
설치 후 packages.yml에 등록
packages:
- package: calogica/dbt_expectations
version: [">=0.7.0", "<0.8.0"]
보통은 앞서 dbt 제공 테스트들과 같이 사용
models/schema.yml
dbt Expectations 함수들 일부
expect_column_to_exist
expect_row_values_to_have_recent_data
expect_column_values_to_be_null
expect_column_values_to_not_be_null
expect_column_values_to_be_unique
expect_column_values_to_be_of_type
expect_column_values_to_be_in_set
expect_column_values_to_not_be_in_set
expect_column_values_to_be_between
'Airflow 고급 기능, dbt, Data Catalog' 카테고리의 다른 글
데이터 카탈로그 기능 소개 (0) | 2024.01.05 |
---|---|
DBT 요약 (0) | 2024.01.05 |
DBT Snapshots (0) | 2024.01.05 |
DBT Sources (0) | 2024.01.05 |
DBT Seeds (0) | 2024.01.05 |