inflearn logo
강의

Course

Instructor

Apache Airflow with Silicon Valley Engineers

Learn about Sensors

dags 디렉토리안에 sql디렉토리 넣고 .sql 파일로 관리해도 되나요?

3

jason

76 asked

0

안녕하세요 강사님

현재 airflow 3.2 버전을 퀵하게 운용할 일이 생겨 이 강의를 보며 큰 도움을 받고 있습니다 감사합니다

 

해당 영상에서는 dags 디렉토리 안에 파이썬 스크립트안에서 입력된 sql문을 불러오는 task가 있는데

 

혹시 사전에 필요한 테이블을 만든 뒤

dags 디렉토리 안에 sql 디렉토리를 만들어 .sql 파일에 쿼리문을 넣고

파이썬 스크립트로 해당 .sql 파일을 불러와 실행 시키는 방법도 가능할까요?

 

ETL 작업을 하다보면 원천에서 insert into select 문으로 배치를 이용하여 데일리로 스테이징, 마트까지 붓기에 따로 sql 파일을 만들어 관리 하는게 좋겠다 생각이 들더라구요

혹시 관련된 강의 섹션 혹은 , 참조할 수있는 레퍼런스가 있는지 궁금합니다!

 

 

 

 

python 빅데이터 데이터-엔지니어링 airflow

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 홍태경님,

Airflow에서 연속적으로 SQL 작업을 처리할 때, SQL 파일을 별도로 관리하는 것은 매우 좋은 접근 방법입니다. SQL 쿼리를 .sql 파일로 저장하여 DAG 내에서 불러와서 사용하는 것은 코드의 가독성 및 관리 측면에서 장점이 있습니다. 이렇게 하면 SQL을 코드와 분리하여 관리하기 수월하며, 다른 프로젝트에서 동일한 쿼리를 재사용할 수 있습니다.

Airflow PythonOperator 또는 BashOperator를 이용하여 Python 코드에서 SQL 파일을 읽고, 해당 쿼리를 데이터베이스에 실행하게 할 수 있습니다. 또한, PostgresOperator와 같은 연산자를 사용할 수도 있습니다. 파일로부터 SQL 쿼리를 읽는 것은 open() 함수를 통해 파일 내용을 읽고, 이를 운영자에게 전달하여 실행하는 형태로 구현할 수 있습니다.

예를 들어, 다음과 같이 SQL 쿼리를 파일로부터 읽어올 수 있습니다.

from airflow import DAG
from airflow.operators.postgres_operator import PostgresOperator
from datetime import datetime

# DAG 정의
dag = DAG('example_dag', start_date=datetime(2023, 12, 12), schedule_interval='@daily')

# SQL 파일을 읽어오는 함수
def load_query(file_path):
    with open(file_path, 'r') as file:
        return file.read()

# PostgresOperator 사용
create_table_task = PostgresOperator(
    task_id='create_table',
    postgres_conn_id='your_postgres_connection_id',
    sql=load_query('/path/to/your/sql/file.sql'),
    dag=dag
)

Airflow에서 SQL 쿼리 파일과 .py 파일을 분리하는 방법은 Airflow 커뮤니티에서도 일반적으로 권장하는 방식입니다. 이와 관련된 많은 예제와 템플릿이 온라인에서 제공되고 있습니다. 유용한 정보와 모범 사례를 위해 Apache Airflow의 공식 문서 또는 커뮤니티 포럼을 참조하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

airflow 3로 되면서 2.x대에 지원 중단된 패키지가 많네요..ㅠ

0

1

0

C언어에서

0

3

1

apache airflow 설치하기 질문

0

94

2

postgres_loader DAG 에러

1

60

3

Queue 강의를 듣고 난 후에 대한 질의

0

59

1

공식 compose 내 postgres db 설치시

0

81

2

postgres_loader의 apache-airflow-providers-postgres 버전 호환성

1

191

2

Airflow Limitation 강의에 대한 질문

1

96

1

airflow와 postgres간의 connection 오류

1

1151

4

from airflow.sensors.sql import SqlSensor에 대해 질문 있습니다.

1

258

1

메타데이터 의미

1

372

2

병렬처리 질문드립니다.

1

512

2

connection 정보 이전 방법 질문드립니다.

1

279

1

PostgresOperator로 대량의 데이터 업로드 방법 질문드립니다.

1

403

1

강의 할인 프로모션 질문입니다..

1

286

1

hook 질문드립니다.

1

352

1

section 2-hook 강의 질문

1

295

1

airflow tasks test 질문드립니다!

1

511

3

airflow docker compose 질문드립니다.

1

421

1

섹션1 apache airflow 설치하기 질문

1

467

1

my_first_dag.py 파일 질문 입니다

1

403

1

Docker 에서 airflow 사용시 질문드립니다

1

964

2

airflow tasks test error

2

578

1

블로그에 글을 올려도 되나요?

0

491

2