[TIL 6/8] Airflow Day 4

heering·2023년 6월 8일
0

PK 유지 방법

여기에서 기록했던 것처럼, 빅데이터 웨어하우스에서는 PK가 무시된다. 오늘은 PK를 유지하는 나름의 방법을 배웠다. 아래는 예시다.

  1. 임시 테이블을 만든다. 원래 테이블의 내용을 임시 테이블 t에 복사한다.
CREATE TEMP TABLE t AS SELECT * FROM heering.weather_forecast;
  1. DAG는 임시 테이블(staging table)에 레코드를 추가한다. 중복 데이터가 들어갈 수 있다.

  2. 원래 테이블 내용 삭제한다.

DELETE FROM heering.weather_forecast;
  1. 중복을 없앤 형태로 새로운 테이블을 생성한다.
INSERT INTO heering.weather_forecast
SELECT date, temp, min_temp, max_temp, created_date
FROM (
	SELECT *, ROW_NUMBER() OVER (PARTITION BY date ORDER BY created_date DESC) seq
    FROM t
)
WHERE seq = 1; -- 일련번호인 seq가 1인 것만.
  1. 매번 이렇게 새로 덮어쓰는 형식의 업데이트. autocommit=True라면, 최소 3번과 4번은 transaction으로 처리되어야 함.

Backfill 관련 Airflow 변수

이름설명
start_date처음 읽어와야 하는 데이터의 날짜. ETL의 첫 동작은 기록 시작일인 start_date + DAG의 실행주기부터.
execution_date읽어와야 하는 데이터의 날짜로 설정됨. 시스템의 변수로 읽어와야 하는 데이터의 날짜를 지정
catchup⚠ default가 True이므로 주의, DAG가 처음 활성화된 시점이 start_date보다 미래라면 그 사이에 실행 안된 걸 실행함.
end_date보통 불필요, Backfill을 날짜 범위에 대해 하는 경우에만

0개의 댓글