airflow
-
아래 글은 옵시디언으로 작성되었습니다. Xcom이란? Cross Communication의 약자로 Airflow DAG 안 ==Task 간 데이터 공유를 위해 사용되는 기술==이다.(Task1의 수행 중 내용이나 결과를 Task2에서 사용 또는 입력으로 주고 싶은 경우) ==주로 작은 규모의 데이터 공유를 위해 사용==되며 Xcom의 내용은 메타 DB의 Xcom 테이블에 값이 저장된다. 만약, 1GB 이상의 대용량 데이터 공유를 위해서는 외부 솔루션을 사용해야 한다.(AWS S3, HDEF 등) Python 오퍼레이터에서 Xcom사용하기 크게 두 가지 방법으로 Xcom 사용이 가능하다. 1) **kwargs에 존재하는 ti(task_instance) 객체 활용 Xcom에 데이터 push @task(tas..
[airflow] - 오퍼레이터 with Xcom아래 글은 옵시디언으로 작성되었습니다. Xcom이란? Cross Communication의 약자로 Airflow DAG 안 ==Task 간 데이터 공유를 위해 사용되는 기술==이다.(Task1의 수행 중 내용이나 결과를 Task2에서 사용 또는 입력으로 주고 싶은 경우) ==주로 작은 규모의 데이터 공유를 위해 사용==되며 Xcom의 내용은 메타 DB의 Xcom 테이블에 값이 저장된다. 만약, 1GB 이상의 대용량 데이터 공유를 위해서는 외부 솔루션을 사용해야 한다.(AWS S3, HDEF 등) Python 오퍼레이터에서 Xcom사용하기 크게 두 가지 방법으로 Xcom 사용이 가능하다. 1) **kwargs에 존재하는 ti(task_instance) 객체 활용 Xcom에 데이터 push @task(tas..
2024.01.01 -
이번에는 macro 변수에 대해서 알아보자 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro가 있다면 만들지 못하는 날짜가 없다고 한다. 스케쥴러를 잘 다루지 못하면 airflow를 잘 다룬다고 할 수 없는 만큼 날짜 연산은 중요하므로 이번 기회에 잘 포스팅 해보고자 한다. airflow에서 macro란? airflow dags를 구성할때 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro 변수의 필요성 Dag 스케줄이 매월 말 일에 도는 스케줄인데 Between 값을 전월 마지막일부터 어제 날짜까지 주고 싶을 경우가 있다고 하자 이때 어제 날짜는 스케쥴러가 끝나는 오늘 날부터 하루 전 날짜이므로 아래처럼 식을 구성해야 하는데 그것을 macro가 해준다..
[Airflow] - Macro 변수이번에는 macro 변수에 대해서 알아보자 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro가 있다면 만들지 못하는 날짜가 없다고 한다. 스케쥴러를 잘 다루지 못하면 airflow를 잘 다룬다고 할 수 없는 만큼 날짜 연산은 중요하므로 이번 기회에 잘 포스팅 해보고자 한다. airflow에서 macro란? airflow dags를 구성할때 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro 변수의 필요성 Dag 스케줄이 매월 말 일에 도는 스케줄인데 Between 값을 전월 마지막일부터 어제 날짜까지 주고 싶을 경우가 있다고 하자 이때 어제 날짜는 스케쥴러가 끝나는 오늘 날부터 하루 전 날짜이므로 아래처럼 식을 구성해야 하는데 그것을 macro가 해준다..
2023.12.31 -
airflow는 데이터 처리를 목적으로 만들어진 툴이기 때문에 우리도 ETL 처리를 할 때 데이터 관점에서 생각해야 한다. 1. 데이터 추출 예시 위와 같은 예시 테이블이 있다고 생각해보자 이러한 테이블을 조회하기 위한 Daily ETL 조회쿼리는 다음과 같다.(2023/02/25 0시 실행) SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN TIMESTAMP(‘2023-02-24 00:00:00’) AND TIMESTAMP(‘2023-02-24 23:59:59’) 위 쿼리를 보면 실제 쿼리가 시작되는 시점은 2023/02/25 0시이다. 데이터 관점에서 보면 다음과 같다. 데이터 관점의 시작일: 2023-02-24 데이터 관점의 종료일: 2023-02..
[Airflow] - Airflow의 날짜개념airflow는 데이터 처리를 목적으로 만들어진 툴이기 때문에 우리도 ETL 처리를 할 때 데이터 관점에서 생각해야 한다. 1. 데이터 추출 예시 위와 같은 예시 테이블이 있다고 생각해보자 이러한 테이블을 조회하기 위한 Daily ETL 조회쿼리는 다음과 같다.(2023/02/25 0시 실행) SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN TIMESTAMP(‘2023-02-24 00:00:00’) AND TIMESTAMP(‘2023-02-24 23:59:59’) 위 쿼리를 보면 실제 쿼리가 시작되는 시점은 2023/02/25 0시이다. 데이터 관점에서 보면 다음과 같다. 데이터 관점의 시작일: 2023-02-24 데이터 관점의 종료일: 2023-02..
2023.12.20 -
1. jinja 템플릿이란? 문서(파일)에서 특정 양식으로 작성된 값을 런타임 시 실제 값을 치환해 주는 처리 엔진이다. 파이썬 언어에서 사용되는 템플릿 엔진이다. 예시 사용법은 아래와 같다. sql에서도 사용 가능하다. 예를 들어 아래 구문을 template로 만들어두고 날짜마다 바꾸고 싶을 때도 사용가능하다. SELECT * FROM tables WHERE base_dt = {{ }}; 2. Airflow에서 사용법 오퍼레이터 파라미터 입력시 중괄호 {} 2개를 이용하면 Airflow에서 기본적으로 제공하는 변수들을 치환된 값으로 입력할 수 있다. 다만, airflow에서는 모든 파라미터에 Template 변수 적용이 가능하지 않다. Templates 적용이 가능한 파라미터는 오퍼레이터마다 다른데 어..
[Airflow] - JINJA templates1. jinja 템플릿이란? 문서(파일)에서 특정 양식으로 작성된 값을 런타임 시 실제 값을 치환해 주는 처리 엔진이다. 파이썬 언어에서 사용되는 템플릿 엔진이다. 예시 사용법은 아래와 같다. sql에서도 사용 가능하다. 예를 들어 아래 구문을 template로 만들어두고 날짜마다 바꾸고 싶을 때도 사용가능하다. SELECT * FROM tables WHERE base_dt = {{ }}; 2. Airflow에서 사용법 오퍼레이터 파라미터 입력시 중괄호 {} 2개를 이용하면 Airflow에서 기본적으로 제공하는 변수들을 치환된 값으로 입력할 수 있다. 다만, airflow에서는 모든 파라미터에 Template 변수 적용이 가능하지 않다. Templates 적용이 가능한 파라미터는 오퍼레이터마다 다른데 어..
2023.12.20 -
Email Operator를 이용해 Task 실행 시 메일을 자동으로 전송하는 것을 해 보았다. 1. Gmail 기본 설정하기 (IMAP 설정) 먼저, 아래 순서대로 들어가 준다. Gmail 접속 >> 설정 >> 모든 설정보기 >> 전달 및 POP/IMAP 그 후, IMAP 사용 안함을 사용함으로 바꿔주면 된다. 아래 사진을 참고 하자 2. Gmail 앱 비밀번호 불러오기 아래와 같은 경로로 이동해준다. Gmail 계정 -> 보안 -> 2단계 인증 -> 앱 비밀번호 생성 아래와 같은 화면이 나오면 잘 진행이 된거다. 저 앱 비밀전호는 한번 뜨면 다시는 볼 수 없으니 반드시 어딘가에 잘 보관해야 한다. 3. Docker-compose.yaml 파일 수정하기 vi를 통해 yaml 파일을 보면 아래처럼 env..
[Airflow] - Email Operator로 메일 전송하기Email Operator를 이용해 Task 실행 시 메일을 자동으로 전송하는 것을 해 보았다. 1. Gmail 기본 설정하기 (IMAP 설정) 먼저, 아래 순서대로 들어가 준다. Gmail 접속 >> 설정 >> 모든 설정보기 >> 전달 및 POP/IMAP 그 후, IMAP 사용 안함을 사용함으로 바꿔주면 된다. 아래 사진을 참고 하자 2. Gmail 앱 비밀번호 불러오기 아래와 같은 경로로 이동해준다. Gmail 계정 -> 보안 -> 2단계 인증 -> 앱 비밀번호 생성 아래와 같은 화면이 나오면 잘 진행이 된거다. 저 앱 비밀전호는 한번 뜨면 다시는 볼 수 없으니 반드시 어딘가에 잘 보관해야 한다. 3. Docker-compose.yaml 파일 수정하기 vi를 통해 yaml 파일을 보면 아래처럼 env..
2023.11.23 -
LG cns 연구원님이신 김현진님의 airflow 강의 무료쿠폰에 당첨되어 이번에 듣게 되었다. 너무 기대가 된다!!! 다만 강의 환경이 다른데 김현진님은 window 위에 WSL을 깔아서 강의를 진행 하지만 난 M1 Mac... 개발 환경을 설정하는 것부터 크나큰 문제가 발생했다. 하지만 어차피 Docker위에서 진행 됨으로 크게 차이는 없을 것이라 판단하고 진행하기로 했다. 각설하고 airflow 설치 방법을 알아보자 1. 환경변수 설정 export AIRFLOW_HOME='/Users/choejeehyuk/airflow' # 사용자 경로로 수정 # 확인 echo $AIRFLOW_HOME 2. 가상환경 생성 # 가상환경 생성 $ python3 -m venv venv-airflow # 가상환경 실행 $..
[Airflow] - M1 Mac에서 airflow 설치하기(docker-compose 이용)LG cns 연구원님이신 김현진님의 airflow 강의 무료쿠폰에 당첨되어 이번에 듣게 되었다. 너무 기대가 된다!!! 다만 강의 환경이 다른데 김현진님은 window 위에 WSL을 깔아서 강의를 진행 하지만 난 M1 Mac... 개발 환경을 설정하는 것부터 크나큰 문제가 발생했다. 하지만 어차피 Docker위에서 진행 됨으로 크게 차이는 없을 것이라 판단하고 진행하기로 했다. 각설하고 airflow 설치 방법을 알아보자 1. 환경변수 설정 export AIRFLOW_HOME='/Users/choejeehyuk/airflow' # 사용자 경로로 수정 # 확인 echo $AIRFLOW_HOME 2. 가상환경 생성 # 가상환경 생성 $ python3 -m venv venv-airflow # 가상환경 실행 $..
2023.11.07