구조화된 소스에서 데이터 추출

Python으로 ETL과 ELT

Jake Roach

Data Engineer

소스 시스템

이 과정에서 다룹니다:

  • CSV 파일
  • Parquet 파일
  • JSON 파일
  • SQL 데이터베이스

데이터 소스 예시:

  • API
  • 데이터 레이크
  • 데이터 웨어하우스
  • 웹 스크래핑
  • ... 그리고 더 많습니다!
Python으로 ETL과 ELT

Parquet 파일 읽기

Parquet 파일:

  • 필드 저장·조회에 효율적인 오픈 소스 컬럼 지향 포맷
  • CSV와 유사한 방식으로 작업
import pandas as pd

# Read the parquet file into memory
raw_stock_data = pd.read_parquet("raw_stock_data.parquet", engine="fastparquet")
1 https://www.databricks.com/glossary/what-is-parquet
Python으로 ETL과 ELT

SQL 데이터베이스 연결

  • SQL 데이터베이스에서 pandas DataFrame으로 데이터를 가져올 수 있습니다
  • 연결 URI로 엔진을 만들고 DB에 연결해야 합니다
import sqlalchemy
import pandas as pd

# Connection URI: schema_identifier://username:password@host:port/db
connection_uri = "postgresql+psycopg2://repl:password@localhost:5432/market"
db_engine = sqlalchemy.create_engine(connection_uri)
# Query the SQL database
raw_stock_data = pd.read_sql("SELECT * FROM raw_stock_data LIMIT 10", db_engine)
Python으로 ETL과 ELT

모듈화

기능 분리(함수화)

  • 파이프라인 가독성 향상
  • "중복 금지(DRY)" 원칙 준수
  • 문제 해결 속도 향상
def extract_from_sql(connection_uri, query):
    # Create an engine, query data and return DataFrame
    db_engine = sqlalchemy.create_engine(connection_uri)
    return pd.read_sql(query, db_engine)

extract_from_sql("postgresql+psycopg2://.../market", "SELECT ... LIMIT 10;")
Python으로 ETL과 ELT

연습해 봅시다!

Python으로 ETL과 ELT

Preparing Video For Download...