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

More Related Content

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이 들어있으면 안되는데 들어있는지 ○ 각 모델별로 ■ 중복된 값이 존재하는지 ■ 테이블의 값이 지난 평균데이터에 비해 크게 뛰지 않았는지
  • 21. Test를 통해 데이터를 검증 할 수 있음 Generic Test Single SQL Test
  • 22. Documentation을 쉽게 할 수 있음 ● 테이블 혹은 뷰가 많아지다보면 필수적으로 관리해야하는게 Data Lineage ○ 어디로부터 왔고 어떤 결과물이 만들어지는가 ○ 위에서 얘기했다 싶이 ref를 통해서 관리 가능 ● yml 파일 안에 column에 대한 설명 및 테이블에 대한 설명을 관리 가능 ● Documentation을 빠르게 배포 가능 ○ dbt docs generate ○ dbt docs serve
  • 25. Macro를 통해 중복 코드를 줄일 수 있음 ● Jinja를 통해 Macro 를 만들거나 쿼리를 빌드 할 수 있음 ● if, loop 를 사용해서 반복되는 작업에 사용 가능 ● 실행되는 시점에 다른 값을 넣을 수 있는 variable 사용 가능 ● macro 로 정의해서 추후에 재사용 가능하게 만들 수 있음 ● 너무 좋은 predefinded macro들이 많음
  • 26. 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