構造化されたソースからのデータ抽出

Python で学ぶ ETL と ELT

Jake Roach

Data Engineer

ソースシステム

このコースで扱う内容:

  • CSV ファイル
  • Parquet ファイル
  • JSON ファイル
  • SQL データベース

データの取得元には他にも次のようなものがあります:

  • API
  • データレイク
  • データウェアハウス
  • Web スクレイピング
  • ...その他多数!
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

モジュール化

ロジックを関数に分割する

  • パイプラインの可読性が向上します
  • 「同じことを繰り返さない」という原則に従います
  • トラブルシューティングが迅速になります
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...