관리 메뉴

A seeker after truth

10주차: 데이터 파이프라인, Airflow (5) 본문

Data/데엔 데브코스 TIL

10주차: 데이터 파이프라인, Airflow (5)

dr.meteor 2023. 12. 19. 17:59

숙제 리뷰

ELT는 이미 있는 테이블들 조인해서 새로운 테이블, 정보 만드는 거라는데...?

 

5: DISTINCT 로만 중복 제거 처리한 UpdateSymbol_v2 는 이 페이지의 사진같은 문제를 유발할 수 있음. 날짜 기준 유니크 레코드여야 하는데 지금 안그런 상황. DISTINCT 들어간 쿼리문이 한 로우의 모든 컬럼 값을 선택하는 거라, 모든 컬럼의 값이 같아야만 중복 제거 처리를 해주기 때문.

만약 이 dag가 한 장이 끝난 다음장 때'만' 실행되면 그럴 일 없는데, 실수로라도 한 장이 안끝났는데 실행되면 중복 제거 제대로 안되는사태 생길 것. volume 값 등이 다를 것.

이의 해결 방법은 데웨서 제공해주는 업서트 방식 혹은 row number 기준 파티셔닝 윈도우 함수 시퀄문 사용.


RDB -> DW ELT 구현

이번에도 풀리프레쉬, 인크리멘탈 업뎃 방법으로 나눠 구현.

 

8: 이런 식으로 하는데 만약 마이시퀄에 레코드 많으면 "인서트 함수 호출"에 시간 다가기 때문에 퍼포먼스가 안나게 되는거

복사하려는 레코드 많으면 #1에 써있는 방법이 더 선호되고.

마이시퀄가 레드시프트가 각각 에스스리버킷 액세스하는 "보안"세팅필요. 이떄 클라우드 지식 필요해지는 거다.

 

우선 에어플로 실행한 뒤 마이시퀄&S3 세팅하기. 단 호스트 정보 등 바뀔 수 있으므로 프로그래머스스쿨 페이지 및 슬랙 확인 후 진행!

 

16: 2번으로 권한 설정 시 버킷 생성까지 가능하게 해주는... 그러나 액세스 키 어디 노출되거나 하면 단연 더 위험해지는 것.

 

첫번째 대그는 이미 만들어져 있는 것에 파라미터만 채우는 형태로 갈 것.

 

23: SqlToS3Operator는 시퀄기반으로 동작하는 대부분의 데베를 소스로 해서 거기에 특정 셀렉문 실행 후 결과로 받아 s3 특정 위치에 저장해주는 일을 한번에 해주는 것

 

강의자료 26쪽으로 넘어가기 전에, 어제 다 못했던 weather 새로운 키로 작동되는지, 기존 키로는 안되는지 확인 그리고 mysql-to-red.py 실행하는 거 한번 해보자~!

 

26: 인크리멘탈 방식 쓰려면 만족해야 하는 프로덕션 디비의 조건이 몇 가지 있다. ... 맨날 하던 이 칼럼들이 이거였어...?

레코드가 삭제안되면 앞의 조건들만으로 충분하나, 삭제가 되면 인크리멘탈 업뎃 할 수가 없다. 삭제된건 다 읽어오기 전에 모르니까. 어떤 게 삭제되는게 가능하다면 물리적으로 삭제하지 않고 이 deleted 컬럼 사용하는.

 

27: 여기 나오는 방식은 코드 구현 해보진 않고 방식만 설명. A 테이블은 소스이자 타겟테이블.

 

30: 코드 리뷰 MySQL_to_Redshift_v2.py 35번째 줄 쿼리문에 나오는.. 익숙한 이 문법. 장고 템플릿엔진 속 이 문법이 바로 jinja 라고 한다.. !!!!!!!!!!!!

 

41: 마이시퀄 투 레드시프트 코드작성할 때 별다른 대그/코드 작성하지 않고도 지원해주는 오퍼레이터 사용해 중간에 에스스리 끼고 서로 데이터 이동하는 일 많이 했다. 요새 그 어떤 데베/데웨든 간에 에어플로가 사실상 외부에서 내부로 데이터 갖고 오는 파이프라인 작성의 표준과 같아졌기 때문에 관련 기능/오퍼레이터 다량 지원중.

 

둘다 성공!


정리

42: 파이프라인이 너무 많으면 이걸 누가 작성한건지 기억할 수도 없는 등... 그럴수록 데이터 품질 관리 힘들어진다. 갈수록 중요해 지는 건 데이터 품질 관리에 대한 부분이다. 파이프라인의 오너가 누군지 기록해둬야 함. 계속 쓰는거 맞는지 확인해보고 안쓰면 삭제하는 등의 일이 필요하다.