データエンジニアリングの役割

データエンジニアリングは、分析・機械学習に使えるデータを収集・変換・保管するインフラを構築する分野です。「データの水道管」を作ることで、データサイエンティストやアナリストが良質なデータにアクセスできるようにします。

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 Expectationsdbtのtestを使ってスキーマ検証・NULLチェック・範囲チェックを自動化し、不正データが下流に流れないようにします。