전체 글 373

Airflow - 숙제 리뷰와 트랜잭션

Python ETL 개선하기 데이터 웨어하우스에서 테이블을 업데이트 하는 방법은 두 가지라고 말씀 드렸습니다. 1. Full Refresh 단순하고 강력하지만 데이터의 크기가 커질수록 시간이 오래걸립니다. 이번의 숙제는 Full Refreshi 구현입니다. 2. Incremental Update 데이터가 클 경우 효과적이지만 복잡도가 증가합니다. 보통 타임스탬프 혹은 일련 번호 등의 필드가 필요합니다. execution_date 활용 (Airflow가 Incremental Update를 쉽게 수행하도록 도와주는 기능입니다. 이후에 자세히 대해 설명드리겠습니다.) 테이블을 삭제하는 방법들 DELETE FROM vs TRUNCATE TRUNCATE는 일괄적으로 모든 데이터를 삭제, DELETE FROM은 W..

Airflow 2023.12.12

Airflow 구성

Airflow를 구성하는 컴포넌트와 스케일링 방법과 코드 구조에 대해 알아보자 Airflow - 총 5개의 컴포넌트로 구성 1. 웹 서버 (Web Server) Python Flask로 구현 스케줄러와 DAG의 현황을 표시 2. 스케줄러 (Scheduler) 데이터 파이프라인을 워커에게 배정 3. 워커 (Worker) 태스크에 해당하는 코드를 실행 4. 메타 데이터 데이터베이스 a. Sqlite가 기본으로 설치되었지만 싱글 코어에 파일 기반이므로 테스트 용도로도 성능이 좋지 않아 MySQL이나 PostgreSQL 등을 따로 설치해 사용 5. 큐 (다수서버 구성인 경우에만 사용됨) Airflow를 다수의 서버로 구성하는 경우 데이터 파이프라인에 어떤 태스크가 어떤 워커로 실행될 것인지를 큐에 넣어 두어 판..

Airflow 2023.12.11

Airflow 소개

Airflow 소개 (1) Airflow는 파이썬으로 작성된 데이터 파이프라인 (ETL) 프레임웍 Airbnb에서 시작한 아파치 오픈소스 프로젝트 가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임웍 데이터 파이프라인 스케줄링 지원 정해진 시간에 ETL 실행 혹은 한 ETL의 실행이 끝나면 다음 ETL 실행 웹 UI를 제공하기도 함 Airflow 소개 (2) 데이터 파이프라인(ETL)을 쉽게 만들 수 있도록 해줌 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공 - https://airflow.apache.org/docs/ 데이터 파이프라인 관리 관련 다양한 기능을 제공해줌: 특히 Backfill Airflow에서는 데이터 파이프라인을 DAG(Directed Acyclic Graph..

Airflow 2023.12.11

Airflow - ETL 실습

사용해볼 데이터 웨어하우스 Redshift dc2.large - 2 CPU, 15GB memory, 160GB SSD Host: (포트) Port: 5439 Database: (DB 이름) ID: 본인의 ID 이 ID로 스키마가 만들어져 있음 Password: 본인의 패스워드 raw_data, analytics, adhoc 3개의 스키마 이외에 자신의 ID로 만들어진 스키마가 하나 더 있습니다. 본인의 스키마는 본인만이 접근할 수 있고 앞으로의 실습은 이 스키마에서 진행하겠습니다. Extract, Transform, Load ETL을 데이터 파이프라인하며 Airflow에서는 DAG라고 지칭 Extract: 데이터를 데이터 소스에서 읽어내는 과정. 보통 API 호출 Transform: 필요하다면 그 원본 ..

Airflow 2023.12.11

Ariflow - 데이터 파이프라인을 만들 때 고려할 점

이상과 현실간의 괴리 이상 혹은 환상 내가 만든 데이터 파이프라인은 문제 없이 동작할 것이다 내가 만든 데이터 파이프라인을 관리하는 것은 어렵지 않을 것이다 현실 혹은 실상 데이터 파이프라인은 많은 이유로 실패함 - 버그 :) - 데이터 소스상의 이슈: What if data sources are not available or change its data format - 데이터 파이프라인들간의 의존도에 이해도 부족 (파이프라인이 수십, 수백 개로 늘어나는 경우 파이프라인 간의 의존성이 생기기 시작합니다. 파이프라인이 사용하는 테이블이나 컬럼을 수정, 삭제하는 경우 파이프라인의 작동이 실패하는 경우가 빈발합니다.) 데이터 파이프라인의 수가 늘어나면 유지보수 비용이 기하급수적으로 늘어남 - 데이터 소스간의 ..

Airflow 2023.12.11

Airflow - 데이터 파이프라인

데이터 파이프라인 ETL = 데이터 파이프라인 = Airflow에서의 DAG(Directed Acyclic Graph) ETL의 주기적 실행, ETL 간의 실행 순서를 관리해주는 역할을 Airflow가 담당 요약 테이블 만들기가 바로 ELT로 보통 데이터 분석가들이 많이 실행한다. 용어 설명: ETL (Extract, Transform, and Load) ETL: Extract, Transform and Load 추출, 정제, 적제 Data Pipeline, ETL, Data Workflow, DAG Called DAG (Directed Acyclic Graph) in Airflow Directed: 양방향이 아닌 일방향이다. Acyclic: Loop가 존재하지 않는다. 용어 설명: ELT (Extrac..

Airflow 2023.12.09

8주차 - 5 [프로젝트] 프로젝트를 마치며

쌓여왔던 기술부채 모든 프로젝트가 마찬가지겠지만(특히 초보자 일수록) 초기 계획과는 달리 실무에서 작업량이 불어나기 마련이다. 테이블 레코드들에 대한 인덱싱, Documentation 미작성, 엉망으로 한 테이블 디자인 등. 프로젝트 이후 단순히 보기 좋게 정리하는 것이 아닌 어떠한 사유로 기술부채가 발생했는지를 취합할지 고민을 해봐야 할 것 같다. 예를 들어 테이블 디자인의 경우 Superset에서의 차트 생성 편의를 위해 테이블의 컬럼수를 잔뜩 늘리는 ELT 작업을 수행했었다. 이럴 경우 ELT 결과물을 analytics 혹은 adhoc 스키마 중에 어디에 적재할까? 그전에 이 테이블이 앞으로도 다른 곳에서 사용할 일이 있을까? 그보다 더 나아가 차트 생성의 편의성과 데이터 적재 모두를 만족하는 테이..

데브코스 TIL 2023.12.08

8주차 - 4 [프로젝트] 대시보드의 실전성과 확장성

프로젝트를 진행하며 성취하고 싶었던 2가지 목표를 다시 복기한다. 대시보드의 실전성 데이터를 수집하고 가공하여 대시보드를 만드는 궁극적인 이유이기도 하다. 대시보드 서비스 이용자들이 우리가 제작한 대시보드로 어떤 인사이트를 얻을 수 있을까? 1. 금융시장이 어떤 산업대분류 소분류로 구분되고 각 산업별 비중이 어떻게 되는지 어떤 기업들로 구성되어있는지 한 눈에 살펴본다. 2. 각 기업별 주가 추이를 Dual Y-axis를 이용하여 금리나 통화량 등 과의 상관관계를 한눈에 살필 수 있도록 한다. 3. 실제 금융시장에서 사용자들에게 제공되는 것과 같은 수준의 데이터 시각화 서비스를 제공하기 위해 최대한 노력한다. Treemap과 Pie 차트로 현재 J.P. Morgan 시장 분석보고서와 finviz 웹 사이트..

데브코스 TIL 2023.12.07

8주차 - 3 [프로젝트] 완성 전에 발목을 잡는 것들

문제가 몇 가지 있다. 1. 대시보드에서 시각화 세부설정은 CSS를 다룰 수 있어야 한다. Superset이 Tableau 등 기타 BI 대시보드에 비하면 조금 더 디테일한 시각화 설정(세부 설정)이 가능하다고 한다. 그런데 그 설정이라는 것이 차트 생성 GUI에서 세부 설정 UI를 제공하는 것이 아니라 사용자가 본인의 입맛에 맞춰 CSS 파일을 생성하고 이를 대시보드 상에서 적용할 수 있다는 얘기로 약간의 프론트 엔드 테크닉을 요구한다는 점. 프로젝트 결과물을 조금 더 예쁘게 표현하고 싶은데 CSS를 다시 공부해야하나?.. 2. CSS 선택자(Selectors)를 찾기가 쉽지 않다. 무슨 말이냐면 대시보드 상의 각 차트의 선택자는 브라우저의 개발자 도구로 쉽게 찾을 수 있는 반면에 차트를 구성하는 개별..

데브코스 TIL 2023.12.06