XCom과 Variable의 차이 XCom으로는 특정 DAG, 특정 schedule에 수행되는 task 간에만 데이터를 공유할 수 있었다. Variable을 사용하면 모든 DAG에서 공통적으로 사용할 전역 변수를 등록하고 사용할 수 있다. 즉, 모든 DAG이 공유할 수 있는 전역 변수이다. Variable 등록 Airflow UI에서 쉽게 등록할 수 있다. 실제 등록한 Variable의 key, value 값은 메타 DB variable 테이블에 저장된다. Variable 사용 2가지 방법으로 Variable 사용이 가능하다. Variable 라이브러리 이용 Jinja Template 이용 (권고) Variable 라이브러리 이용 라이브러리를 이용해 operator 외부에서 변수를 가져오는 방법이다. i..
Data/Airflow
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. XCom이란 XCom(Cross Communication)이란 airflow dag 안 task 간 데이터 공유를 위해 사용되는 기술이다. 예로 task1의 수행 중 내용이나 결과를 task2에서 사용하거나 입력으로 주고 싶은 경우에 사용한다. - 주로 작은 규모의 데이터 공유를 위해 사용 - XCom 내용은 메타 DB의 xcom 테이블에 저장됨 - 1GB 이상의 대용량 데이터 공유는 외부 솔루션(AWS S3, HDFS 등)을 사용 Bash Operator에서 XCom 사용 Template 변수인 ti(Task Instance)를 사용해 push, pull이 가능하다. Bash operator에서는 env, bash_command 파라미..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다.XCom이란XCom(Cross Communication)이란 airflow dag 안 task 간 데이터 공유를 위해 사용되는 기술이다.예로 task1의 수행 중 내용이나 결과를 task2에서 사용하거나 입력으로 주고 싶은 경우에 사용한다. - 주로 작은 규모의 데이터 공유를 위해 사용- XCom 내용은 메타 DB의 xcom 테이블에 저장됨- 1GB 이상의 대용량 데이터 공유는 외부 솔루션(AWS S3, HDFS 등)을 사용Python Operator에서 XCom 사용2가지 방법으로 XCom을 사용할 수 있다.**kwargs에 존재하는 task_instance 객체 활용파이썬 함수의 return 값 활용task_instance 객체 활용P..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. 공식 문서 확인 Python Operator에서 Template 변수 사용에서 어떤 파라미터가 template 변수를 지원하는지 확인했었다. templates_dict, op_args, op_kwargs 파라미터에 template 변수를 사용할 수 있다. Python Operator에서 Macro 사용 Bash Operator에서 Macro를 사용했던 것과 똑같다. @task(task_id='task_using_macro', templates_dict={'start_date':'{{ (data_interval_end.in_timezone("Asia/Seoul") + macros.dateutil.relativedelta.relativede..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. Macro 변수 필요성 dag이 실행되는 시점에 값이 들어가야 할 때 template 변수를 사용했다. DB 테이블이 존재하고 daily ETL 처리를 위한 조회 쿼리가 매일 0시에 실행된다고 가정할 때 data_interval_start, data_interval_end template 변수를 사용하면 매일 날짜를 바꿔줄 필요 없이 하루동안 쌓인 데이터를 조회할 수 있었다. 그런데 이와는 달리 복잡한 경우가 있다. dag이 매월 말일(0 0 L * *)에 도는 스케줄을 가지고 있을 때 전월 말일부터 1일 전까지의 데이터만 조회하고 싶을 때이다. SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BE..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. 공식 문서 확인 Python 오퍼레이터에는 어떤 파라미터에 template 변수를 쓸 수 있는지 알아보고 사용해본다. 먼저 airflow 공식 문서를 확인한다. https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/python/index.html Bash Operator에서 Template 변수 사용에서와 마찬가지로 Parameters, template_fields를 모두 확인한다. templates_dict 파라미터에만 (templated)가 있고 이외에는 없다. template_fields에는 templates_dict 이외에도 op_args, op_..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. Data 관점에서의 날짜 이전 글에서 bashoperator에서 template 변수를 사용해봤다. 그때 사용했던 data_interval_start, data_interval_end가 어떤 값을 나타내는지 이해하려면 먼저 airflow에서의 날짜 개념을 이해해야 한다. DB 테이블이 존재하고 daily ETL 처리를 위한 조회 쿼리가 2023년 2월 25일 0시에 실행된다고 가정할 때, 이 쿼리는 2월 24일 0시 0분 0초 ~ 2월 24일 23시 59분 59초 사이의 데이터를 가져온다. SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN TIMESTAMP('2023-02-24 00:0..
Airflow 마스터 클래스 강의 수강, 개인 공부 후 기록합니다. 공식 문서 확인 Bash 오퍼레이터에는 어떤 파라미터에 template 변수를 쓸 수 있는지 알아보고 사용해본다. 먼저 airflow 공식 문서를 확인한다. https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/bash/index.html bash operator 문서에서 Parameters 부분을 찾는다. 각 파라미터 설명 끝에 (templated)가 있다면 해당 파라미터에 template 변수 사용이 가능하다. 그런데 이것만 보면 안 되고 페이지 밑으로 조금 더 이동하면 template_fields가 나오는데 이 부분도 확인해야 한다. bash ope..