Jinja 템플릿 with Python 오퍼레이터

우상욱·2024년 3월 24일

Airflow Master Class

목록 보기
17/24

Python 오퍼레이터 with Template


def python_function(start_date, end_date, **kwargs):
    print(start_date)
    print(end_date)

python_t1 = PythonOperator(
    task_id='python_t1',
    python_callalbe=python_function,
    op_kwargs={'start_date':{{data_interval_start | ds}}', 'end_date':{{data_interval_end | ds}}'}
    )
  • 파이썬 오퍼레이터는 **kwargs에 Template 변수들을 자동으로 제공해주고 있음
  • 첫번째 방식과 다르게 kwargs에서 꺼내 쓰는 방식
@task(task_id='python_t2')
def python_function2(**kwargs):
    print(kwargs)
    print('ds:' + kwargs['ds'])
    print('ts:' + str(kwargs['ts']))
    print('data_interval_start:' + str(kwargs['data_interval_start']))         print('data_interval_end:' + str(kwargs['data_interval_end']))             print('task_instance:' + str(kwargs['ti']))
    python_function2()

참고로 task 데코레이터를 작성하면,

python_t1 >> python_function2()

이렇게도 사용할 수 있습니다.

결과확인

  • 첫번째 태스크

  • 두번째 태스크

편한 방식으로 태스크를 작성해서 사용하면 됩니다.

profile
데이터엔지니어

0개의 댓글