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

Python으로 하는 ETL과 ELT

Jake Roach

Data Engineer

소스 시스템

이 코스에서 다루는 내용:

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

데이터는 다음에서도 수집됩니다:

  • API
  • 데이터 레이크
  • 데이터 웨어하우스
  • 웹 스크래핑
  • ... 그 외에도 다양한 방식이 있습니다!
Python으로 하는 ETL과 ELT

Parquet 파일 읽기

Parquet 파일:

  • 효율적인 필드 저장과 검색을 위해 설계된 오픈소스 열 지향(column-oriented) 파일 형식입니다
  • 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가 필요합니다
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

모듈화

로직을 함수로 분리하기

  • 파이프라인의 가독성을 높입니다
  • "반복하지 않기(don't repeat yourself)" 원칙을 따릅니다
  • 문제 해결 속도를 높입니다
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...