목록Airflow 고급 기능, dbt, Data Catalog (29)
터칭 데이터

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

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

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를 하기 위함이며 이 때 데이터 품질 검증이 중요해짐 데이터 품질의 중요성 증대 입출력 체크 더 다양한 품질 검사 리니지 체크 데이터 히스토리 파악 데이터 품질..

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

태스크 그룹핑의 필요성 태스크 수가 많은 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..
팁: Airflow 메타데이터 DB 내용 살펴보기 airflow:airflow로 Postgres에 로그인 가능 docker exec -it learn-airflow-airflow-webserver-1 sh 혹은 learn-airflow-airflow-scheduler-1로 로그인 그 다음에 아래 명령 수행 psql -h postgres docker-compose로 연결된 컨테이너들끼리는 서비스 이름을 host이름 처럼 연동할 수 있다고 했었습니다. psql shell에서 아래 명령 수행 \dt select * FROM dag_run LIMIT 10; DELETE FROM dag_run WHERE dag_id = '기록을삭제하고싶은DAG’; 참고로 psql shell에서는 ctrl + l로 창을 clear..

데모 TriggerDagRunOperator 실습: SourceDag TargetDag Jinja 템플릿 실습: Learn_Jinja BranchPythonOperator 실습: Learn_BranchPythonOperator LatestOnlyOperator 실습: Learn_LatestOnlyOperator Trigger Rules 실습: Learn_TriggerRules TriggerDagRunOperator 실습: TriggerDag.py의 DAG ID는 SourceDag입니다. 먼저 실행이 되어야하는 DAG를 SourceDag라고 합니다. TriggerDag from airflow import DAG from airflow.operators.trigger_dagrun import TriggerD..

Sensor + ExternalTaskSensor BranchPythonOperator LatestOnlyOperator Trigger Rules Sensor란 무엇인가? Sensor는 특정 조건이 충족될 때까지 대기하는 Operator Sensor는 외부 리소스의 가용성이나 특정 조건의 완료와 같은 상황 동기화에 유용 Airflow는 몇 가지 내장 Sensor를 제공 FileSensor: 지정된 위치에 파일이 생길 때까지 대기 HttpSensor: HTTP 요청을 수행하고 지정된 응답이 대기 SqlSensor: SQL 데이터베이스에서 특정 조건을 충족할 때까지 대기 TimeSensor: 특정 시간에 도달할 때까지 워크플로우를 일시 중지 ExternalTaskSensor: 다른 Airflow DAG의 특..

Contents 1. 지난 숙제 리뷰 2. Dag Dependencies 3. Task Grouping 4. Dynamic Dags 5. DockerOperator Dag Dependencies DAG간 실행 순서를 정하려면 어떻게 해야하는지 알아보자 Dag를 실행하는 방법 주기적 실행: schedule로 지정 crontab을 이용 다른 Dag에 의해 트리거 Explicit Trigger: Dag A가 분명하게 Dag B를 트리거 (TriggerDagRunOperator) Reactive Trigger: Dag B가 Dag A가 끝나기를 대기 (ExternalTaskSensor) 알아두면 좋은 상황에 따라 다른 태스크 실행 방식들 조건에 따라 다른 태스크로 분기 (BranchPythonOperator) ..