jinja 7

[Airflow] 전역 공유변수 Variable

앞서서는 특정 dag에 있는 task끼리만 데이터를 공유할 수 있는 방법이었다면, 모든 dag에서 데이터를 접근하는 방식에 대해 알아볼까합니다. 그런 용도로 airflow에서 기능을 제공하는 것이 Variable 입니다. 1. 전역변수 Variable 이해 Xcom: 특정 DAG, 특정 schedule에 수행되는 Task 간에만 공유 모든 DAG이 공유할 수 있는 전역 변수는 없을까요? → 바로 Variable이 있습니다! ※ Variable 등록하기 : airflow 서비스를 띄우고, Admin 탭에 들어가서 Variables 메뉴를 누르고 "+" 버튼을 누르면 됩니다. : 실제 Variable의 Key, Value 값은 메타 DB에 저장됩니다. (variable 테이블) Variable도 Key, V..

[Airflow] Python Operator with macros

BashOperator에서도 macro변수를 어떻게 쓸 수 있는지 알아본만큼, 이번 시간에는 PythonOperator에서 macro를 사용하는 방법을 알아보겠습니다. 1. 먼저 PythonOperator에서는 어떤 파라미터가 Template 변수를 지원할까요? 공식문서를 살펴보면, 'template_dict', 'op_args', 'op_kwargs' 가 템플릿을 지원합니다. 저번에는 op_kwargs 를 이용해서 template 변수를 써봤으므로, 이번에는 templates_dict 를 써서 macro변수를 써보겠습니다. Python 오퍼레이터를 사용해 macro변수를 써보는 코드를 작성해보겠습니다. @task(task_id = 'task_using_macros', templates_dict = {'..

[Airflow] Bash Operator with macros

Macro 변수는 Jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능으로서 파이썬의 datetime이나 dateutil 같은 라이브러리를 이용해서 날짜연산을 할 수 있도록 지원을 해주고 있습니다. 1. 먼저 이런 Macro변수가 왜 필요한지 살펴봅시다. 아래상황을 가정해봅시다. DAG 스케줄은 매일 말일에 도는 스케줄인데(ex 0 0 L * *), BETWEEN 값을 전 월 마지막일부터 어제 날짜까지 주고 싶은데 어떻게 할까요? sql = f``` SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN ?? AND ?? ''' 와 같은 sql 이 있다고 합시다. 여기서 예를 들어, 배치일이 1월 31일이면, 12월 31일부터 1월 30일까지 배치일이..

[Airflow] Python Operator에서 Jinja 템플릿 사용하기

저번에는 Bash Operator를 Jinja 템플릿을 사용했다면, 이번에는 Python Operator에서 사용해봅시다. 1. Python 오퍼레이터에서 with Template Python 오퍼레이터는 어떤 파라미터에 Template을 쓸 수 있을까요? 공식문서를 살펴보면 아래와 같습니다. python_callable op_kwargs op_args template_dict template_exts show_return_value_in_logs op_kwargs 와 op_args, template_dict 세 개의 파라미터가 template을 쓸 수 있습니다. 바로 한 번 실습을 해보도록 하겠습니다. 이 중에서, op_kwargs를 이용해서 jinja 템플릿을 써보도록 하겠습니다. (※ 파이썬 오퍼레..

[Airflow] Airflow의 날짜 개념

이전 포스팅에서 bash operator를 이용해 템플릿 변수를 출력해봤는데, 치환된 값이 어떤 값인지 이해하기 위해서 먼저 Airflow에서의 날짜개념을 짚고 넘어가야 할 필요가 있습니다. 1. Airflow 날짜 Template 변수 이해 먼저, 데이터 추출 예시를 살펴봐봅시다. (ex) 등록 테이블 REG_DATAE NAME ADDRESS 2023-02-24 15:34:35 홍길동 Busan 2023-02-24 19:14:42 김태희 Seoul 2023-02-24 23:52:19 조인성 Daejeon Daily ETL 처리를 위한 조회 커리 (2023/02/25 0시 실행) 라고 가정합시다. (그렇게 되면, 24일에서 25일 사이의 데이터를 가져오는 셈이겠죠?) 쿼리를 작성해보면 아래와 같습니다. ..

반응형