Airflow
Dynamic Dag
  • 템플릿과 YAML을 기반으로 DAG를 동적으로 만들어보자.
    • Jinja를 기반으로 DAG 자체의 템플릿을 디자인하고 YAML을 통해 앞서 만든 템플릿에 파라미터를 제공
    • 이를 통해 DAG를 계속해서 메뉴얼하게 개발하는 것을 방지
  • DAG를 계속해서 만드는 것과 한 DAG안에서 태스크를 늘리는 것 사이의 밸런스 필요
    • 오너가 다르거나 태스크의 수가 너무 커지는 경우 DAG를 복제해나가는 것이 더 좋음

기본적인 아이디어 (Dynamic DAG)

from airflow improt DAG
 
with DAG (dag_id = "get_price{{dag_id}}",
	start_date = datetime(2025,3,20),
	schedule={{schedule}},
	catchup= {{catchup or False}} as dag
)
 
 
@task 
def process(symbol):
	return symbol
 
@task 
def store(symbol):
	return symbol
 
 
store(process({{symbol}}))