Airflow Study12- PythonOperator with macro

박성현·2024년 6월 2일

Airflow

목록 보기
19/28
post-thumbnail

탬플릿 변수 사용 가능한 Python Operator 종류

https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/python/index.html!

Macro vs Python 연산 차이 ?

그냥 편한걸로 ...

#Macro 사용 

@task(task_id='task_using_macros',
	templates_dict={
    	'start_date':'{{ (data_interval_end.in_timezone("Asia/Seoul") + macros.dateutil.relativedelta.relativedelta(months=-1,day=1)) | ds }}',
		'end_date': '{{ (data_interval_end.in_timezone("Asia/Seoul").replace(day=1) + macros.dateutil.relativedelta.relativedelta(days=-1)) | ds }}'
	} )
def get_datetime_macro(**kwargs):
	templates_dict = kwargs.get('templates_dict') or {} if templates_dict:
	start_date = templates_dict.get('start_date') or 'start_date없음' 
    end_date = 	templates_dict.get('end_date') or 'end_date없음' print(start_date)
	print(end_date)
# Python 직접사용 
@task(task_id='task_direct_calc') 
def get_datetime_calc(**kwargs):
	from dateutil.relativedelta import relativedelta data_interval_end = kwargs['data_interval_end']

	prev_month_day_first = data_interval_end.in_timezone('Asia/Seoul') + relativedelta(months=-1, day=1)
	prev_month_day_last = data_interval_end.in_timezone('Asia/Seoul').replace(day=1) + relativedelta(days=-1)
	print(prev_month_day_first.strftime('%Y-%m-%d')) print(prev_month_day_last.strftime('%Y-%m-%d'))
profile
다소Good한 데이터 엔지니어

0개의 댓글