전체 글 373

데모 Input-Output

데모: dbt Models: Input & Output 앞서 내용들을 전체적으로 직접 실행해보자 아까 설치한 learn_dbt 프로젝트로 이동하여 dbt_project.yml 파일을 수정할겁니다. 마지막 두 줄을 삭제합니다. 예제로 만들어져 우리가 사용하지 않기 때문입니다. 삭제 후 저장을 마치고 models 폴더의 example 폴더를 삭제합니다. 대신 src 폴더를 만들고 src 폴더로 이동한 후 3개의 파일을 만듭니다. 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_us..

DBT - Outnput

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: Output 최종 출력 데이터를 만드는 과정을 살펴보자 Materialization이란? 입력 데이터(테이블)들을 연결해서 새로운 데이터(테이블) 생성하는 것 보통 여기서 추가 transformation이나 데이터 클린업 수행 4가지의 내장 materia..

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, co..

DBT - 사용 시나리오

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 소개 Data Build Tool이 무엇인지 알아보자 dbt란 무엇인가? Data Build Tool (https://www.getdbt.com/) ELT용 오픈소스: In-warehouse data transformation dbt Labs라는 회사가 상용화 ($4...

DBT - Database Normalization

4. dbt (Data Build Tool) 떠오르는 ELT 툴! 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. 마무리 ELT의 미래는? ETL을 하는 이유는 결국 ELT를 하기 위함이며 이 때 데이터 품질 검증이 중요해짐 데이터 품질의 중요성 증대 입출력 체크 더 다양한 품질 검사 리니지 체크 데이터 히스토리 파악 데이터 품질..

Airflow 운영과 대안

3. Airflow 운영과 대안 Airflow 운영과 대안에 대해 배워보자 프로덕션 사용을 위한 Airflow 환경설정 Things to Change (1) airflow.cfg is in /var/lib/airflow/airflow.cfg Any changes here will be reflected when you restart the webserver and scheduler [core] 섹션의 dags_folder가 DAG들이 있는 디렉토리가 되어야함 - /var/lib/airflow/dags dag_dir_list_interval: dags_folder를 Airflow가 얼마나 자주 스캔하는지 명시 (초 단위) Airflow Database upgrade (Airflow 설치때 설명) Sqlit..

Dynamic Dags

Dynamic Dags DAG를 템플릿에 따라 찍어내야 하는 경우가 있는데 이를 사람의 손으로 하나하나 복사 붙여넣기 하기에는 귀찮고 실수할 확률도 높다. 이를 대신 해주는 것이 Dynamic Dags Dynamic Dags를 사용해서 코드 재사용을 최대화할 수 있다! Jinja template와 YAML을 사용해야함 Dynamic Dag란 무엇인가? 템플릿과 YAML을 기반으로 DAG를 동적으로 만들어보자 Jinja를 기반으로 DAG 자체의 템플릿을 디자인하고 YAML을 통해 앞서 만든 템플릿에 파라미터를 제공 이를 통해 비슷한 DAG를 계속해서 매뉴얼하게 개발하는 것을 방지 DAG를 계속해서 만드는 것과 한 DAG안에서 태스크를 늘리는 것 사이의 밸런스 필요 오너가 다르거나 태스크의 수가 너무 커지는..

Task Groups

태스크 그룹핑의 필요성 태스크 수가 많은 DAG라면 태스크들을 성격에 따라 관리하고 싶은 니즈 존재 SubDAG이 사용되다가 Airflow 2.0에서 나온 Task Grouping으로 넘어가는 추세 - SubDAG를 비슷한 일을 하는 태스크들을 SubDAG라는 Child Dag로 만들어서 관리 다수의 파일 처리를 하는 DAG라면 파일 다운로드 태스크들과 파일 체크 태스크와 데이터 처리 태스크들로 구성 예제 살펴보기 - 소스코드 Learn Task Groups from airflow.models.dag import DAG from airflow.operators.empty import EmptyOperator from airflow.operators.bash import BashOperator from a..