Jinja 템플릿 with Bash 오퍼레이터

우상욱·2024년 3월 24일

Airflow Master Class

목록 보기
15/24

예제


from airflow import DAG
from airflow.operators.bash import BashOperator
import datetime
import pendulum

with DAG(
    dag_id="dags_bash_with_template",
    schedule="10 0 * * *",
    start_date=pendulum.datetime(2023, 3, 1, tz="Asia/Seoul"),
    catchup=False,
) as dag:
    bash_t1 = BashOperator(
        task_id="bash_t1",
        bash_command='echo "End date is {{ data_interval_end }}"',
    )

    bash_t2 = BashOperator(
        task_id="bash_t2",
        env={
            "START_DATE": "{{ data_interval_start | ds }}",
            "END_DATE": "{{ data_interval_end | ds }}",
        },
        bash_command="echo Start date is $START_DATE && echo End date is $END_DATE",
    )

    bash_t1 >> bash_t2

  • 기본적으로 data_interval 값은 utc 시간을 갖고 있습니다.
  • 나온 값에서 9시간을 더해준, 2024-03-24T00:10~ 값이 한국 시간입니다.

  • 두번째 태스크에서는 환경변수에 등록한 START_DATE와 END_DATE를 출력하고 있습니다.
  • data_interval_end 값을 ds로 변환한 시간이 나오게 됩니다.
profile
데이터엔지니어

0개의 댓글