전역변수 Variable
▪ XCOM은 특정 DAG이나 schedule에 수행되는 Task 간에만 데이터를 공유할 수 있었음
▪ 모든 DAG이 공유할 수 있는 전역변수가 Variable
▪ Variable에 등록한 key, value 값은 메타 DB에 저장
▪ 협업 환경에서 표준화된 dag을 만들기 위해 사용되며, 상수로 지정해서 사용할 변수를 셋팅
Variable 등록하기
▪ webserver에 접속하고, [Admin] -> [Variables] 클릭
▪ [+] 클릭해서 새로운 Variable 생성
▪ 다음과 같이 Key, value 값 입력하고 [save] 클릭
전역변수 사용하기
▪ Variable 라이브러리의 get 함수를 이용해서 값 꺼내온 뒤 사용
▪ 스케줄러의 주기적 DAG 파싱시 Variable.get 개수만큼 DB 연결을 일으켜 불필요한 부하가 발생하기 때문에, 템플릿 문법을 사용해서 데이터를 꺼내오는 것을 권장
▪ 또는 템플릿 문법을 사용해서 꺼내올 수 있음
▪ var.value에 꺼내고 싶은 key 값을 입력
dags_bash_with_variable.py
▪ bash_var_1에서 Variable 라이브러리의 get 함수를 사용해서 전역변수 꺼내온 뒤 출력
▪ bash_var_2에서 템플릿 문법을 사용해서 전역변수 꺼내온 뒤 출력
from airflow import DAG
import pendulum
from airflow.operators.bash import BashOperator
from airflow.models import Variable
with DAG(
dag_id="dags_bash_with_variable",
schedule="10 9 * * *",
start_date=pendulum.datetime(2023, 12, 18, tz="Asia/Seoul"),
catchup=False
) as dag:
var_value = Variable.get("sample_key")
bash_var_1 = BashOperator(
task_id="bash_var_1",
bash_command=f"echo variable:{var_value}"
)
bash_var_2 = BashOperator(
task_id="bash_var_2",
bash_command="echo variable:{{var.value.sample_key}}"
)
Dag 실행하기
▪ dag을 airflow에 upload하고, webserver 접속해서 dag unpause

▪ bash_var_1의 실행결과 log
▪ bash_var_2의 실행결과 log
참고:
Airflow 마스터 클래스 강의 - 인프런
데이터 파이프라인을 효율적으로 만들고 관리하기 위한 Orchestration 도구인 Airflow에 대해 배우는 강의입니다. 초보자도 차근차근 배울 수 있는 Airflow 마스터 클래스, 환영합니다!, 데이터 파이프
www.inflearn.com
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] @task.branch로 분기처리 (0) | 2024.02.21 |
---|---|
[Airflow] BranchPython Operator로 분기처리 (0) | 2024.02.21 |
[Airflow] Python/email Operator간 Xcom 사용 (0) | 2024.02.11 |
[Airflow] Python/Bash Operator간 Xcom 사용 (1) | 2024.02.04 |
[Airflow] Bash Operator에서 Xcom 사용 (0) | 2024.02.04 |