從結構化來源擷取資料

使用 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 建立引擎並連到資料庫
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

模組化

將邏輯拆成函式

  • 提升 pipeline 可讀性
  • 遵循「不要重複自己」原則
  • 加速除錯
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...