터칭 데이터
DBT - Input 본문
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 Models: Input
dbt Model을 사용해 입력 데이터들을 transform해보자
Model이란?
ELT 테이블을 만듬에 있어 기본이 되는 빌딩블록
테이블이나 뷰나 CTE의 형태로 존재
입력,중간,최종 테이블을 정의하는 곳
티어 (raw, staging, core, …)
raw => staging (src) => core
잠깐: View란 무엇인가?
SELECT 결과를 기반으로 만들어진 가상 테이블
기존 테이블의 일부 혹은 여러 테이블들을 조인한 결과를 제공함
CREATE VIEW 이름 AS SELECT …
View의 장점
데이터의 추상화: 사용자는 View를 통해 필요 데이터에 직접 접근. 원본 데이터를 알 필요가 없음
데이터 보안: View를 통해 사용자에게 필요한 데이터만 제공. 원본 데이터 접근 불필요
복잡한 쿼리의 간소화: SQL(View)를 사용하면 복잡한 쿼리를 단순화.
View의 단점
매번 쿼리가 실행되므로 시간이 걸릴 수 있음
원본 데이터의 변경을 모르면 실행이 실패함
잠깐: CTE (Common Table Expression)
WITH temp1 AS (
SELECT k1, k2
FROM t1
JOIN t2 ON t1.id = t2.foreign_id
), temp2 AS (
…
)
SELECT *
FROM temp1 t1
JOIN temp2 t2 ON …
예)
WITH src_user_event AS (
SELECT * FROM raw_data.user_event
)
SELECT
user_id,
datestamp,
item_id,
clicked,
purchased,
paidamount
FROM
src_user_event
Model 구성 요소
Input
입력(raw)과 중간(staging, src) 데이터 정의
raw는 CTE로 정의
staging은 View로 정의
Output
최종(core) 데이터 정의
core는 Table로 정의
이 모두는 models 폴더 밑에 sql 파일로 존재
기본적으로는 SELECT + Jinja 템플릿과 매크로
다른 테이블들을 사용 가능 (reference)
- 이를 통해 리니지 파악
데이터 빌딩 프로세스
Append라고 적혀있지만 Incremental Update
models/src - src_user_event.sql
WITH src_user_event AS (
SELECT * FROM raw_data.user_event
)
SELECT
user_id,
datestamp,
item_id,
clicked,
purchased,
paidamount
FROM
src_user_event
models/src - src_user_variant.sql
WITH src_user_variant AS (
SELECT * FROM raw_data.user_variant
)
SELECT
user_id,
variant_id
FROM
src_user_variant
models/src - src_user_metadata.sql
WITH src_user_metadata AS (
SELECT * FROM raw_data.user_metadata
)
SELECT
user_id,
age,
gender,
updated_at
FROM
src_user_metadata
Model 빌딩: dbt run
Model 빌딩 확인
해당 스키마 밑에 테이블 생성 여부 확인
dbt run은 프로젝트 구성 다양한 SQL 실행
이 SQL들은 DAG로 구성됨
dbt run은 보통 다른 더 큰 명령의 일부로 실행
dbt test
dbt docs generate
'Airflow 고급 기능, dbt, Data Catalog' 카테고리의 다른 글
데모 Input-Output (0) | 2024.01.04 |
---|---|
DBT - Outnput (0) | 2024.01.04 |
DBT - 사용 시나리오 (0) | 2024.01.04 |
DBT - Database Normalization (0) | 2024.01.04 |
Airflow 운영과 대안 (0) | 2024.01.04 |