Variables
Airflow에서 전역적으로 사용할 값을 미리 정의해 두고 공통적으로 사용할 변수를 뜻한다.
Airflow Web UI를 통해 정의하거나 JSON 파일을 이용해 대량으로 업로드할 수 있다.
이 글에서는 Variables를 정의하고 사용하는 방법을 정리한다.
Variables 설정
1. 상단 메뉴에서 Admin > Variables로 접근
2. +(Add a new record) 버튼 클릭
3. Variable의 키와 값 지정 후 Save 버튼 클릭
값은 텍스트, JSON 등 관계없이 지정할 수 있는 것 같다.
4. 설정값 확인
값이 잘 설정된 것을 확인할 수 있다.
접근
1. airflow.models.Variable import
Airflow에 설정된 Variables에 접근하기 위해서는 아래와 같은 모듈을 import 해야 한다.
from airflow.models import Variable
2. 값 호출
Variables 값은 Variable 모듈의 get 함수로 호출할 수 있다.
# 단순 호출
val_list_dags = Variable.get("list_dags")
# JSON 형식 값 호출
val_list_dags = Variable.get("list_dags", deserialize_json=True)
# 호출 시 기본값 설정
val_list_dags = Variable.get("list_dags", default_var=None)
예시
아래 DAG를 예시로 살펴본다. Airflow에 설정되어 있는 list_dags 값을 출력하는 간단한 DAG이다.
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.models import Variable
dag_args = {
"owner": "airflow", "retries": 1, "retry_delay": timedelta(minutes=1),
}
# Variables 접근
list_vals = Variable.get('list_dags', default_var='').split('\n')
def print_val():
print(list_vals)
dag = DAG(
dag_id="get_variables",
default_args=dag_args,
start_date=datetime(2022, 1, 20),
schedule_interval="@once",
)
t = PythonOperator(task_id=f"print_vals", python_callable=print_val, dag=dag)
실행 결과
정상적으로 접근해 값을 출력하는 것을 확인할 수 있다.
참고 문서
https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/variables.html
https://magpienote.tistory.com/206