Apache Airflow

[Airflow] Variables - 설정/사용

비번변경 2023. 4. 15. 23:18

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