터칭 데이터

DBT Tests, Documentation, Expectations 본문

Airflow 고급 기능, dbt, Data Catalog

DBT Tests, Documentation, Expectations

터칭 데이터 2024. 1. 5. 03:12

 

 

 

 

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