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 operator 문서는 두 부분이 같지만, 가끔 파라미터 설명에는 쓰여있지 않은데 template_fields에 추가로 쓰여있는 경우가 있어서 이 두 부분을 모두 확인해야 한다.
bash operator에는 bash_command, env 파라미터에 template 변수를 사용할 수 있다.
Template 변수 사용
bash_t1, bash_t2 두 개의 task로 bash_command, env 파라미터에 template 변수를 사용한다.
Template reference에서 확인할 수 있는 변수인 data_interval_end, data_interval_start를 사용해본다.
bash_t1 = BashOperator(
task_id='bash_t1',
bash_command='echo "data_interval_end: {{ data_interval_end }}"'
)
bash_t2 = BashOperator(
task_id='bash_t2',
env={
'START_DATE':'{{ data_interval_start | ds }}', # YYYY-MM-DD
'END_DATE':'{{ data_interval_end | ds }}'
},
bash_command='echo $START_DATE && echo $END_DATE'
)
bash_t1 >> bash_t2
bash_t1 task는 data_interval_end를 출력한다.
bash_t2 task는 data_interval_start, data_interval_end에 ds를 추가해 YYYY-MM-DD 형식으로 출력한다.
task 수행 결과를 확인하기 전에 Airflow UI에서 해당 dag의 Data interval start, Data interval end를 확인한다.
그 다음 task의 log를 확인한다.
코드에서는 {{ data_interval_end }}로 쓰여있던 부분이 dag이 실행될 때 실제 값으로 치환되는 것을 확인할 수 있다.
특정 날짜 기준으로 데이터를 추출하는 작업이 매일 실행될 때 로직은 바뀔 필요가 없고 추출 기준 날짜만 변경하면 되기 때문에 template 변수를 사용하면 코드를 계속 재사용할 수 있다.
'Data > Airflow' 카테고리의 다른 글
Airflow | Python Operator에서 XCom으로 Task 간 데이터 공유 (0) | 2024.03.30 |
---|---|
Airflow | Python Operator에서 Macro 사용 (0) | 2024.03.30 |
Airflow | Bash Operator에서 Macro 사용 (4) | 2024.02.06 |
Airflow | Python Operator에서 Template 변수 사용 (0) | 2024.02.06 |
Airflow | 날짜 개념 (0) | 2024.02.06 |