- 템플릿과 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}}))