Airflow

Airflow - MySQL 테이블 복사하기 (3) Backfill 실행해보기

터칭 데이터 2023. 12. 15. 23:18

 

 

 

 

 

 

 

 

 

 

 

 

Backfill을 커맨드라인에서 실행하는 방법


airflow dags backfill dag_id -s 2018- 07- 01 -e 2018- 08- 01

 

This assumes the followings:

○ catchUp이 True로 설정되어 있음
○ execution_date을 사용해서 Incremental update가 구현되어 있음

 

start_date부터 시작하지만 end_date은 포함하지 않음

파이썬 arr=[0, 1, 2, 3, 4, 5, 6, 7]에서 arr[:5]=[0, 1, 2, 3, 4]인 것과 같은 개념

 

실행순서는 날짜/시간순은 아니고 랜덤. 만일 날짜순으로 하고 싶다면

DAG default_args의 depends_on_past를 True로 설정

default_args = {
 'depends_on_past': True,

 

 

 

 

 

 

 

 

 

 

How to Make Your DAG Backfill ready (1)


먼저 모든 DAG가 backfill을 필요로 하지는 않음

Full Refresh를 한다면 backfill은 의미가 없음


여기서 backfill은 일별 혹은 시간별로 업데이트하는 경우를 의미함

마지막 업데이트 시간 기준 backfill을 하는 경우라면 (Data Warehouse 테이블에 기록된 시간 기준) 이런 경우에도 execution_date을 이용한 backfill은 필요하지 않음


데이터의 크기가 굉장히 커지면 backfill 기능을 구현해 두는 것이 필수

airflow가 큰 도움이 됨
하지만 데이터 소스의 도움 없이는 불가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

How to Make Your DAG Backfill ready (2)


어떻게 backfill로 구현할 것인가

제일 중요한 것은 데이터 소스가 backfill 방식을 지원해야함
“execution_date”을 사용해서 업데이트할 데이터 결정
“catchup” 필드를 True로 설정 (그래야 다음과 같은 커맨드 라인이 동작)

airflow dags backfill dag_id -s 2018- 07- 01 -e 2018- 08- 01


start_date/end_date을 backfill하려는 날짜로 설정
다음으로 중요한 것은 DAG 구현이 execution_date을 고려해야 하는 것이고 멱등성 보장(idempotent) 해야함