データ基盤と ETL/ELT(DWH・データレイク・BigQuery)

DWH・データレイクの違いと、ETL/ELTの順序の違い。クラウドDWH時代のデータ基盤を整理。

大規模データ処理の土台、データウェアハウス・データレイク・ETL/ELT。

白峰 リリ(普段) 白峰 リリ

データレイクとデータウェアハウスって何が違うの?

神楽 モニカ 先生(笑顔) 神楽 モニカ 先生

どちらも大量データの保管庫だけど、使い方がちょっと違うのよ。 整理してみましょうか。

紅林 かえで(普段) 紅林 かえで

データウェアハウス(DWH)は『分析用に整形された構造化データ』の保管庫。 BigQuery・Redshift・Snowflakeが代表例。 SQL で分析しやすい。

白峰 リリ(普段) 白峰 リリ

データレイクは?

紅林 かえで(普段) 紅林 かえで

あらゆる形式の生データ(CSV・JSON・画像・ログ)を未加工で蓄積する保管庫。 S3・Google Cloud Storage・Azure Blob Storage が代表例。 安価で柔軟。

藍沢 しずく(普段) 藍沢 しずく

じゃあレイクが上流、DWHが下流みたいなイメージですかぁ?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

そう、よくあるパターンは『レイク → 加工処理 → DWH → BIツール』。 加工処理がETLやELTよ。

紅林 かえで(普段) 紅林 かえで

ETL(Extract Transform Load)は『抽出→変換→ロード』。 加工してからDWHに投入。 古典的アプローチ。

紅林 かえで(普段) 紅林 かえで

ELT(Extract Load Transform)は『抽出→ロード→変換』。 まず生データをレイクやDWHに取り込み、必要に応じて変換する。 クラウドDWHの計算リソースを活用する現代的アプローチ。

# ELTの簡単な例(BigQueryへの接続)
from google.cloud import bigquery
import pandas as pd

client = bigquery.Client(project='my-gcp-project')

# 生データをレイクからロード
load_query = '''
  CREATE OR REPLACE TABLE `my_dataset.raw_orders` AS
  SELECT * FROM `my_dataset.s3_orders_external`
'''
client.query(load_query).result()

# DWH内で変換 (T)
transform_query = '''
  CREATE OR REPLACE TABLE `my_dataset.daily_sales` AS
  SELECT
    DATE(ordered_at) AS order_date,
    category,
    SUM(amount) AS total_sales
  FROM `my_dataset.raw_orders`
  WHERE ordered_at >= CURRENT_DATE - INTERVAL 90 DAY
  GROUP BY 1, 2
'''
client.query(transform_query).result()

# 結果取得
df = client.query('SELECT * FROM `my_dataset.daily_sales`').to_dataframe()
藍沢 しずく(普段) 藍沢 しずく

他に押さえておきたいキーワードってありますかぁ?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

バッチ処理 vs ストリーミング処理、Hadoop・Spark(分散処理)、Kafka(ストリーミング)、dbt(SQLでELT)、Airflow(ワークフロー管理)は名前と役割を押さえて。

紅林 かえで(普段) 紅林 かえで

クラウドDWH3強: BigQuery(Google)、Redshift(AWS)、Snowflake(マルチクラウド)。 試験では『どれもDWH』『SQL中心で分析』を覚えれば十分。

白峰 リリ(しょんぼり) 白峰 リリ

うわぁ、覚えること多いなぁ…

神楽 モニカ 先生(笑顔) 神楽 モニカ 先生

DS検定★ではDWH/レイク/ETL/ELT/Hadoop/Sparkの『何の役割か』を押さえれば十分。 細かい実装は問われないわ。

確認クイズ

ELTとETLの違いとして最も正しいのはどれか。

  1. ELTはETLより必ず低速
  2. ELTはロードしてから変換、ETLは変換してからロード
  3. ETLは構造化データのみ、ELTは非構造化のみ
  4. 両者は同じ意味
こたえを見る

正解: 2. ELTはロードしてから変換、ETLは変換してからロード

ELTはロードしてから変換、ETLは変換してからロード。 順序の違いがそのまま名前の違いになっています。 ELTはクラウドDWHの計算リソースを活用できる現代的アプローチ。

藍沢しずく、白峰リリが水族館で大水槽を鑑賞を楽しむ様子

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。