전체 글
[Airflow] 날짜 개념
1. 데이터 추출 예시 REG_DATE NAME ADDRESS 2023-02-24 15:34:35 김아무개 Seoul 2023-02-24 19:14:42 홍박사 Iksan 2023-02-24 23:52:19 비빔밥 Jeonju - Daily ETL 처리를 위한 조회 쿼리 (2023/02/25 0시 실행) select name,address from tbl_reg where reg_date between timestamp('2023-02-24 00:00:00') and timestamp('2023-02-24 23:59:59') -> 데이터 관점의 시작일 : 2023-02-24 데이터 관점의 종료일 : 2023-02-25
[Airflow] Jinja 템플릿
1. Jinja 템플릿이란? 1) 문서(파일)에서 특정 양식으로 작성된 값을 런타임시 실제 값으로 치환해주는 처리 엔진 2) 템플릿 엔진은 여러 솔루션이 존재하며 그 중 Jinja 템플릿은 파이썬 언어에서 사용하는 엔진 from jinja2 import Template template = Template('my name is {{name}}') new_template = template.render(name = 'seo') print(new_template) 3) 파이썬 기반 웹 프레임워크 Flask,Django에서 주로 사용됨 - 주로 HTML 템플릿 저장 후 화면에 보여질 때 실제 값으로 변환해서 출력가능 - SQL 작성시에도 활용 가능 ex) select * from tables where base..
[Airflow] Python 함수 인자
def regist(name,sex): print(name) print(sex) regist('sdd','man') - 일반적인 함수 인자 방법 - 호출하는 로직에서 몇 개의 파라미터를 넘길지 모를떄는 어떻게해야하나..? 1. *arg def regist(name,sex,*args): print(type(args)) country = args[0] if len(args)>=1 else None city = args[1] if len(args)>=2 else None regist('soo','man') regist('soo','man','korea','seoul') - args로 들어온 값은 튜플로 저장 - args에서 값을 꺼낼 때는 인덱스를 이용(ex:args[0],args[1]) - args라는 이름..
[Airflow] 파이썬 오퍼레이터
- 라이브버리 from airflow.operators.python import PythonOperator (패키지명) / (오퍼레티터명(클래스)) - 어떤 역할을 하는 오퍼레이터인가? 정의된 파이썬 함수를 실행시키는것이며, 가장 많이 사용되는 오퍼레이터 - 파이썬 모듈 오퍼레이터 종류 패키지 오퍼레이터 의미 airflow.operators.python PythonOperator - 어떤 파이썬 함수를 실행시키기 위한 오퍼레이터 BranchPythonOperator - 파이썬 함수 실행 결과에 따라 task를 선택적으로 실행시킬 때 사용되는 오퍼레이터 ShortCircuitOperator - 파이썬 함수 실행 결과에 따라 후행 Task를 실행하지 않고 종료시킬 수 있는 오퍼레이터 PythonVirtual..
[Airflow] E-mail 오퍼레이터
- 이메일 전송해주는 오퍼레이터 email_t1 = EmailOperator( task_id="email_t1", to='ooooo@naver.com', subject="Airflow 처리결과", html_content='정상 처리되었습니다. ' - 사전 셋팅 작업 1) 구글 메일 서버 사용 2) G-mail -> 설정 -> 모든 설정보기 -> 전달 및 POP/IMAP -> IMAP 사용 3) 구글 계정관리 -> 보안 -> 2단계 인증 -> 앱비밀번호 셋팅 - Docker-compose.yaml 편집 (environment 항목에 추가) AIRFLOW__SMTP__SMTP_HOST:'stmp.gmail.com' AIRFLOW__SMTP__SMTP_USER:'{gmail 계정}' AIRFLOW__SMTP_..

[Airflow] Task 연결하기
Task 연결 방법 - Task 연결 방법 종류 1) >>, > 후 t1 >> t2 t1 >> t3 t2 >> t4 t3 >> t4 t5 >> t4 장점 : 단순한게 연결하면 한다 단점 : 코드만 봤을때 어떻게 연결되어있는지 한눈에 잘 안들어온다. 2) Code 작성 t1 >> [t2,t3] >> t4 t5 >> t4 [t4,t7] >> t6 >> t8 Airflow 실습 from airflow import DAG import pendulum import datetime from airflow.operators.empty import EmptyOperator with DAG( dag_id = 'dags_conn_test', schedule= None, start_date=pendulum.datetime(..
[Airflow] Cron 스캐줄
Cron 스케줄 개념 - task가 실행되어야 하는 시간(주기)을 정하기 위한 다섯개의 필드로 구성된 문자열 - 다섯개의 필드 : {분} {시} {일} {월} {요일} 특수문자 의미 * 모든 값 - 범위 지정 , 여러 값 지정 / 중간값 지정 L 마지막 값(일, 요일에만 설정 가능) - 일에 L 입력시 해당 월의 마지막 일 의미 - 요일에 L입력시 토요일 의미 # 몇 번째 요일인지 지정 Cron schedule 의미 비고 15 2*** 매일 02시 15분 0 **** 매시 정각 001 ** 매월 1일 0시 0분 10 1**1 매주 월요일 1시 10분 0: 일요일, 1:월요일, 2:화요일, 3:수요일, 4:목요일, 5:금요일, 6:토요일 */30 **** 삼십분마다 (0분,30분) * / * "/" 왼쪽은..

넘파이를 사용한 백터 표현
# 김도형의 데이터 사이언스 스쿨에서 설명되지 않는 코드들 정리 사이킷런 패키지에서 제공하는 MNIST 숫자 이미지를 활용 plt.figure(figsize=(8,2)) for i in range(8): plt.subplot(1,8, i+1) plt.imshow(d[i], interpolation='nearest',cmap=plt.cm.bone_r) plt.grid(False); plt.xticks([]); plt.yticks([]) 1. subplot(행,열,서브플롯) - 행 : 전체 영역의 행수를 표현 -> 지금 현재 코드에서는 1개의 행 - 열 : 전체 영역의 열수를 나타냄 -> 지금 현재 코드에서는 8개의 열이 있음 - 서브플롯 : 그려지는 서브플롯 위치를 결정 반복문을 통하여 i+1를통하여 1부..