목록전체 글 (137)
now is better than never

XCom (Cross Communication) Airflow DAG 안 Task 간 데이터 공유를 위해 사용되는 기술ex) Task1의 리턴 값을 Task2에서 사용하고 싶은 경우 주로 작은 규모의 데이터 공유를 위해 사용 XCom 내용은 메타 DB의 xcom 테이블에 값이 저장됨 1GB 이상의 대용량 데이터 공유를 위해서는 외부 솔루션 사용 필요 (AWS S3-object storage, GCP GCS, HDFS 등) Python Operator + XCom **kwargs 의 ti (task_instance) 객체 활용 template 변수에서 task_instance 객체를 얻을 수 있음 ti 로 XCom 데이터..

매크로 변수 Jinja template 에서 날짜 연산을 가능하게 하는 기능 Template 변수 기반 다양한 날짜 연산이 가능하도록 연산 모듈을 제공 ex) sql = f''' SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN ?? AND ?? ''' 배치일이 1월 31일이면 12월 31일부터 1월 30일 까지 배치일이 2월 28일이면 1월 31일부터 2월 27일까지 BETWEEN 이 설정 from = {{ data_interval_start }} to = {{ data_interval_end }} - 1일 datetime, dateutil 라이브러리를 많이 씀 Bash Operator + Macro 매월 말일 수행되는 DAG 변수 START_DATE..

Jinja 문서(파일)에서 특정 양식으로 작성된 값을 런타임시 실제 값으로 치환해주는 처리 엔진 = 템플릿 엔진 Jinja 템플릿은 파이썬 언어에서 사용하는 템플릿 엔진 파이썬 기반 웹 프레임워크인 Flask, Django 에서 많이 쓰임 → HTML 템플릿 저장 후 백엔드 처리 결과에 따라 실제 값으로 변환해서 화면에 출력 SQL 에서도 사용 가능 오퍼레이터 파라미터 입력 시 {{ }} 안에 변수 Airflow 에서 기본적으로 제공하는 변수 : 수행날짜, DAG_ID 등등 참고 : https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html 모든 오퍼레이터, 파라미터에 템플릿 적용 X 참고 : https://airflow.apache..
op_args python operator 로 함수를 호출할 때 넘겨받는 인자들 = op_args의 값 python_task = PythonOperator( task_id='python_task', python_callable=regist, op_args=[‘name’,’sex’] ) 파이썬 오퍼레이터 op_args 사용 함수에 일반 변수만 있을 경우 일반 변수 + *args *args 만 있을 경우 일반 + *args + **kwargs 일반 변수 + *args + **kwargs plugins/common/common_func.py def regist2(name, sex, *args, **kwargs): print(f'이름 : {name}') print(f'성별 : {sex}') print(f'기타 ..

파이썬 오퍼레이터 정의된 파이썬 함수를 실행시키는 오퍼레이터 from airflow.operators.python import PythonOperator PythonOperator 어떤 파이썬 함수를 실행시키기 위한 오퍼레이터 BranchPythonOperator 파이썬 함수 실행 결과에 따라 task를 선택적으로 실행시킬 때 사용되는 오퍼레이터 TASK 분기- t1 >> [t2, t3] 일 때 t1 의 결과에 따라 t2 / t3 중 하나만 실행 ShortCircuitOperator 파이썬 함수 실행 결과에 따라 후행 Task를 실행하지 않고 종료시킬 수 있는 오퍼레이터 PythonVirtualenvOperator 파이썬 가상환경 생성 후 Job 수행하고 마무리되면 가상환경을 삭제해주는 오퍼레이터 Ext..

이메일 오퍼레이터 (Email Operator) 이메일을 전송해주는 오퍼레이터 사전작업 Gmail → 설정 → 모든 설정보기 → 전달 및 POP / IMAP → IMAP사용 구글 계정 관리 → 보안 → 2단계 인증 → 앱 비밀번호 (구글 이메일 서버 사용 시 인증) docker-compose.yaml 편집 environment 안에 AIRFLOW__SMTP__SMTP_HOST: ‘smtp.gmail.com’ AIRFLOW__SMTP__SMTP_USER: ‘{gmail 계정}’ AIRFLOW__SMTP__SMTP_PASSWORD: ‘{앱비밀번호}’ AIRFLOW__SMTP__SMTP_PORT: 587 AIRFLOW__SMTP__SMTP_MAIL_FROM: ‘{gmail 계정}’ Email Operator ..