

from airflow.models import Variable
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=f"echo variable:{{var.value.sample_key}}"
)
권장하는 방식은 2안입니다. 스케줄러의 주기적 DAG 파싱시 Variable.get 개수만큼 DB 연결을 일으켜서 불필요한 부하가 발생하고, 스케줄러 과부하 원인 중 하나입니다.
그런데 이 전역 변수는 언제 사용하면 좋을까?
협업환경에서 표준화된 dag를 만들기 위해서 주로 사용
주로 상수(CONST)로 지정해서 사용할 변수들 셋팅
bash_sh_dir = /opt/airflow/plugins/shell
base_file_dir = /opt/airflow/plugins/files
email, Alert 메시지를 받을 담당자들의 email 주소 정보
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.models import Variable
import datetime
import pendulum
with DAG(
dag_id="dags_bash_with_variable",
schedule="10 9 * * *",
start_date=pendulum.datetime(2023, 4, 1, tz="Asia/Seoul"),
catchup=False,
) as dag:
var_value = Variable.get("sample_key")
bash_var1 = BashOperator(
task_id="bash_var_1",
bash_command=f"echo variable:{var_value}",
)
bash_var2 = BashOperator(
task_id="bash_var2",
bash_command="echo variable:{{var.value.sample_key}}",
)
bash_var1 >> bash_var2