Backfill
airflow backfill DAG이름 -s 20180701 -e 20180731
모든 데이터를 backfill할 필요 없음. 데이터 작으면 full refresh 하자 ㅋ
full refresh가 아니면 Incremental Update를 해야한다.
- 가장 최근 시각의 레코드나 가장 큰 레코드 ID를 기반으로 구현
- 데이터 소스에 그 이후 데이터를 긁어오면 된다.
- 다만 Append Only가 아니면 변경이 생긴 레코드들의 경우 중복이 존재하므로 제거해야 함(파티션 함수 사용)
- 일 별 혹은 시간 별로 업데이트
- 이 경우 execution_date을 사용해서 어느 날짜 혹은 어느 시간의 업데이트가 필요한지 정한다
Lesson Learned
- DAG와 SQL을 분리하기. SQL을 Variable로 관리하면 정말 변경하기 쉽지만, 변경이력이 안남아서 힘듬.. 중요한 SQL은 코드로 관리하기
- DAG에 Versioning하기
- 데이터가 크지 않으면 Full Refresh하는 게 정신건강에 좋음