dbt 101
- 2. What is Airbridge
Touchpoint (TP)
● What: 광고 조회, 광고 클릭, 웹사이트 내 앱으로
보기 버튼 클릭 등
● Where: “성과를 발생시키기 위한 노력” 이 필요한
모든 Placement (Paid/Earned/Owned 매체)
Conversion (CV)
● What: 앱 설치, 회원가입, 구매 등
● Where: “성과”가 발생하는(장사중인) 모든
Placement (웹/앱/오프라인)
광고 성과 분석 툴이 하는 가장 기본적인
일
광고 성과 분석
- 6. 많은 View 내에서
중복되는 컬럼들
그래서 이런 파이프라인들을
관리하다 보니..
SQL을 뜯어봐야 알 수
있는 Data Lineage
Airflow DAG안에
섞여있는 SQL들
- 8. 많은 View 내에서
중복되는 컬럼들
그래서 이런 파이프라인들을
관리하다 보니..
SQL을 뜯어봐야 알 수
있는 Data Lineage
Airflow DAG안에
섞여있는 SQL들
- 11. Before DBT
1. 직접 데이터 가공하는 application 을 만듬
- 여러 데이터 소스에서 가져온 데이터를 불러서 직접 join 하거나 해야함
- 이게 어떤 데이터를 합쳐서 만드는지 보려면 코드를 까봐야함
- 만드는데 느림
2. GUI 툴을 사용
- Informatica 같은 툴을 이용해 어떤 데이터를 같이 볼껀지 지정해줌
- test도 없음
- 13. Before DBT
1. 직접 데이터 가공하는 application 을 만듬
- 여러 데이터 소스에서 가져온 데이터를 불러서 직접 join 하거나 해야함
- 이게 어떤 데이터를 합쳐서 만드는지 보려면 코드를 까봐야함
- 만드는데 느림
2. GUI 툴을 사용
- Informatica 같은 툴을 이용해 어떤 데이터를 같이 볼껀지 지정해줌
- test도 없음
- 쓰기 싫게 생김
- 14. Goal of dbt
1. SQL을 아는 모두가 데이터 파이프라인을 만들 수 있다
2. version control, test, documentation, re-usability 등
개발자라면 쓸 수 있는 도구들을 모두 쓸 수 있어야한다
→ SQL을 통해 Transform을 할 수 있는 오픈소스 데이터 파이프라인 도구
- 15. dbt Core Concepts
- 모든걸 SQL 문으로 표현할 수 있음
- Model의 순서를 알아서 판단해줌
- Test를 통해 데이터를 검증 할 수 있음
- Documentation 을 쉽게 할 수 있음
- Macro를 통해 중복코드를 줄일 수 있음
- 16. 모든걸 SQL 문으로 표현 할 수 있음
Materialize Model Compiled SQL
- 17. Materialize 종류
모든걸 SQL 문으로 표현 할 수 있음
create view 'raw_hosting' as (...)
View
실제 테이블이나 뷰가 만들어지는게 아니라 참조한 모델의 CTE로 들어가게 됨
Empheral
Snowflake의 Merge into query 와 같이 변경된 row 혹은 추가된 row들에 대해서만 반영해줌
Incremental
(Advanced)
create table 'raw_hosting' as (...)
Table
- 19. Test를 통해 데이터를 검증 할 수 있음
SQL로 Transformation을 하다보면 제일 힘든 부분이 테스트를 작성하기가 어려움
- 20. Test를 통해 데이터를 검증 할 수 있음
● SQL로 Transformation을 하다보면 제일 힘든 부분이 테스트를 작성하기가 어려움
● DBT 에서는 다양한 방식의 테스트를 작성하고 돌릴 수 있음
○ 각 컬럼별로
■ Unique한지
■ NULL이 들어있으면 안되는데 들어있는지
○ 각 모델별로
■ 중복된 값이 존재하는지
■ 테이블의 값이 지난 평균데이터에 비해 크게 뛰지 않았는지
- 22. Documentation을 쉽게 할 수 있음
● 테이블 혹은 뷰가 많아지다보면 필수적으로 관리해야하는게 Data Lineage
○ 어디로부터 왔고 어떤 결과물이 만들어지는가
○ 위에서 얘기했다 싶이 ref를 통해서 관리 가능
● yml 파일 안에 column에 대한 설명 및 테이블에 대한 설명을 관리 가능
● Documentation을 빠르게 배포 가능
○ dbt docs generate
○ dbt docs serve
- 25. Macro를 통해 중복 코드를 줄일 수 있음
● Jinja를 통해 Macro 를 만들거나 쿼리를 빌드 할 수 있음
● if, loop 를 사용해서 반복되는 작업에 사용 가능
● 실행되는 시점에 다른 값을 넣을 수 있는 variable 사용 가능
● macro 로 정의해서 추후에 재사용 가능하게 만들 수 있음
● 너무 좋은 predefinded macro들이 많음
- 27. dbt Core Concepts
- 모든걸 SQL 문으로 표현할 수 있음
- Model의 순서를 알아서 판단해줌
- Test를 통해 데이터를 검증 할 수 있음
- Documentation 을 쉽게 할 수 있음
- Macro를 통해 중복코드를 줄일 수 있음
- 28. 써보면서 느낀 장단점?
- 장점
- 반복적인 코드를 줄일 수 있음
- 추가 플러그인에대한 지원들이 좋음
- Slack등 커뮤니티가 잘 돼있음
- 기존에 sql이 테스트가 힘든점들이 많았는데
best practice를 쌓으면 관리 가능한 sql들이 늘어날수도
- 단점
- type이 select 에서 가져온 타입 그대로 쓰기 때문에 좀 조심할 필요가 있을 것 같다
- json을 통해서 가져온 컬럼 같은경우 무조건 variant
- jinja template 이 들어가기 때문에 formatting 이 어렵다
- 결국 macro가 들어가서 더 복잡해지는건 아닌지 고민해볼 필요가 있음
- 29. 감사합니다.
Copyright ⓒ AB180 All Rights Reserved
AB180에서 저랑 같이
Daily 10억건 이상의 데이터를 안전하게 처리하실 분들을 구합니다
http://abit.ly/ab180-is-hiring
https://abit.ly/songeon-linkedin