データエンジニアリングの役割
データエンジニアリングは、分析・機械学習に使えるデータを収集・変換・保管するインフラを構築する分野です。「データの水道管」を作ることで、データサイエンティストやアナリストが良質なデータにアクセスできるようにします。
ETLとELTの違い
| 方式 | プロセス | 特徴 |
|---|---|---|
| ETL | 抽出→変換→ロード | 変換後にDWHに格納(従来型) |
| ELT | 抽出→ロード→変換 | 生データをDWHに格納後変換(現代型) |
クラウドDWH(BigQuery・Redshift・Snowflake)の普及でELTが主流になっています。
データパイプラインの主要ツール
| カテゴリ | ツール | 特徴 |
|---|---|---|
| オーケストレーション | Apache Airflow | DAGで処理依存を定義 |
| バッチ処理 | Apache Spark | 大規模分散処理 |
| ストリーミング | Apache Kafka | リアルタイムデータ転送 |
| 変換 | dbt(data build tool) | SQL中心の変換・テスト |
| データ統合 | Fivetran・Airbyte | コネクタで自動データ同期 |
Airflowの基本DAG
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
def extract(): ...
def transform(): ...
def load(): ...
with DAG("etl_pipeline", start_date=datetime(2024, 1, 1), schedule="@daily") as dag:
t1 = PythonOperator(task_id="extract", python_callable=extract)
t2 = PythonOperator(task_id="transform", python_callable=transform)
t3 = PythonOperator(task_id="load", python_callable=load)
t1 >> t2 >> t3 # 依存関係の定義
データ品質管理
データパイプラインで最も重要なのがデータ品質です。Great Expectationsやdbtのtestを使ってスキーマ検証・NULLチェック・範囲チェックを自動化し、不正データが下流に流れないようにします。





