レイク・DWH・マート:データの置き場所を決める
Stage 3 — 第2章 | データマネジメント入門 推定学習時間:40〜50分 | 難易度:★★★☆☆
この章で学ぶこと
OLTP と OLAP を分けたあと、分析データは どこに、どんな形で 置くかが問題になります。 さくら商事の S3 には、広告 CSV・ログ・退職者のエクスポートが 名前も形式もバラバラ で残っていました。
一方、BigQuery には mart_finance など 会議で使う表 があります。
この レイク(Lake)・DWH・データマート(Data Mart) の違いを押さえましょう。
この章を終えると、こんなことができるようになります:
- レイク、DWH、マートの 目的と利用者 の違いを説明できる
- 「生 CSV 置き場」と「分析用表」の役割分担を設計できる
- analytics トラックの CTE マート作成と 本トラックの論点 の差を説明できる
- さくら商事の置き場所混乱を整理できる
1. S3 に何でも放り込む問題
鈴木さんが S3 バケット sakura-data-lake を監査したところ、次のようなオブジェクトが混在していました。
| パス例 | 内容 | 問題 |
|---|---|---|
ads/google/2024-03.csv |
広告費 | 列名が月ごとに微妙に違う |
ads/google/2024-03 (1).csv |
同上(手動再 DL) | 重複 |
export/tanaka_backup/orders.csv |
注文 | 個人バックアップ |
logs/nginx/2023/ |
アクセスログ | 分析未整備 |
mart/finance_v2_FINAL.xlsx |
売上 | Excel が lake に |
鈴木
「lake という名前なのに、貯水池兼ゴミ箱兼個人 PC になってる…」
置き場所が 1 つでも、中身のルールがなければ SSOT にはなりません。
2. 三つの置き場所
ざっくり 貯水池 → 浄水場 → 蛇口 の比喩で整理します。
| 置き場 | 比喩 | 中身 | 主な利用者 |
|---|---|---|---|
| データレイク(Data Lake) | 貯水池 | 生データ、ログ、CSV、JSON | DE、将来の分析 |
| DWH(Data Warehouse) | 浄水場 | スキーマ化・履歴管理された分析 DB | DE、AE、アナリスト |
| データマート(Data Mart) | 蛇口 | 部門・用途別に使いやすくした表 | アナリスト、BI、経営 |
次の図は、さくら商事のデータが どの段階で形を変えるか の全体像です。
Raw CSV / JSON"] DWH["DWH
整形・履歴"] MART["データマート
用途別提供"] LAKE -->|"ETL"| DWH -->|"提供"| MART U1["DE"] U2["DE / AE"] U3["アナリスト
BI / 経営"] LAKE -.- U1 DWH -.- U2 MART -.- U3 classDef lake fill:#ecfeff,stroke:#0891b2,color:#1f2937 classDef dwh fill:#eff6ff,stroke:#2563eb,color:#1f2937 classDef mart fill:#f0fdf4,stroke:#16a34a,color:#1f2937 classDef user fill:#f8fafc,stroke:#64748b,color:#64748b class LAKE lake class DWH dwh class MART mart class U1,U2,U3 user
lake に Excel や個人 CSV がある状態は、貯水池に 未処理の排水 が混ざっているイメージです。 会議数字は必ずマート(蛇口)から出します。
3. レイク:柔軟だが、ルールが必要
データレイク は、構造化・非構造化を問わず 安く大量に保管 する場所です。
| メリット | デメリット |
|---|---|
| 形式を問わず取り込める | 「何があるか」が分かりにくい |
| 将来の分析に備えられる | 品質・重複・個人コピーが混ざりやすい |
| コストが低い(オブジェクトストレージ) | そのままでは BI に載せにくい |
3.1 さくら商事のレイクルール(導入案)
| ルール | 内容 |
|---|---|
| パス規約 | {source}/{entity}/{YYYY}/{MM}/{DD}/ |
| 禁止 | 個人名フォルダ、Excel、手動 (1).csv |
| メタデータ | 取込時に ingested_at, source_system 列を付与 |
| 保持 | 生データ 90 日、以降はアーカイブ or 削除 |
レイクは ゴミ箱ではなく、加工前の保管庫 です。
4. DWH:分析向けに整える
DWH(Data Warehouse) は、分析クエリ向けに スキーマ・履歴・品質 を整えたデータベースです。 さくら商事では BigQuery が DWH 相当です。
| 特徴 | 例 |
|---|---|
| テーブル設計 | fct_orders, dim_product |
| 履歴 | スナップショット、SCD(ゆっくり変わる次元) |
| 品質 | NOT NULL、重複チェック(Stage 4) |
| リネージ | staging → intermediate → mart |
DWH は 「分析の作業場」 です。 ここで JOIN・クレンジング・粒度統一を行い、マートへ渡します。
5. データマート:利用者に近い表
データマート(Data Mart) は、特定の 部門・用途 に最適化した分析用表です。
| マート | 粒度 | 主利用者 | SSOT |
|---|---|---|---|
mart_finance |
月次売上 | 経理、経営 | 公式売上 ◎ |
mart_marketing |
日×キャンペーン | マーケ | アトリビューション |
mart_ops |
日×SKU 在庫 | 物流 | 欠品分析 |
マートは 蛇口 —— 利用者が最初に触る「使いやすい形」です。 Stage 2 のセマンティックレイヤーは、このマートの上に載ります。
5.1 野良マートとの境界
| 状態 | 判定 |
|---|---|
| Git 管理、オーナー、カタログ記載 | 公式マート |
| 個人 SQL、Sheets 連携、作者不明 | 野良マート(Stage 4 で詳述) |
6. analytics トラックとの差
データアナリティクス入門 では、CTE でマートを SQL として書く ことを学びます。
| 論点 | analytics | data-management-intro |
|---|---|---|
| 焦点 | JOIN、粒度、指標 SQL | どの層に置くか、誰が提供責任を持つか |
| マート | WITH で作成 |
公式 mart_* として SSOT 化 |
| レイク | 触れない | 取込規約、個人 CSV 禁止 |
| 品質 | SQL チェック | 置き場所・オーナー・野良化防止 |
SQL でマートを書ける ことと、組織の公式マートとして提供できる ことは別スキルです。
-- analytics で学ぶ「マートの形」(例)
WITH daily_revenue AS (
SELECT
DATE(shipped_at) AS sales_date,
SUM(total_amount) AS revenue
FROM fct_orders
WHERE status NOT IN ('cancelled')
GROUP BY 1
)
SELECT * FROM daily_revenue;
同じロジックでも、本トラックの問いは 「この SQL の結果を mart_finance として誰が承認し、Looker からだけ触らせるか」 です。
7. さくら商事のターゲット構成(簡略)
Shopify / Ads / ERP
↓
S3 Lake (raw, 規約付き)
↓ ETL
BigQuery staging / DWH core
↓ transform
mart_finance / mart_marketing / mart_ops
↓
Looker Semantic Layer → ダッシュボード
| 移行タスク | 担当 |
|---|---|
| 個人 CSV を lake から削除 | DE + 各部門オーナー |
mart_finance を SSOT 化 |
AE + 経理スチュワード |
| カタログに 3 マートを登録 | AE + 鈴木 |
体系コラム:カリキュラム上の位置づけ
| 項目 | 内容 |
|---|---|
| Stage / 章 | Stage 3 — 第2章「レイク・DWH・マート」 |
| 今回の論点 | 生データ・整形基盤・利用者向け表の 三つの置き場 を役割で分ける |
| DAMA 領域 | データストレージ・操作、DW & BI |
| ライフサイクル | 保存(lake/DWH)と加工・活用(mart) |
| 前章との接続 | OLTP と OLAP で分離した分析側を、中身の整理 する |
| 次章への伏線 | メダリオン層 — 三層を Bronze/Silver/Gold に 運用ルール 化 |
体系コラム:用語のつながり
Stage 2 の「意味」と Stage 3 の「置き場」は、次の対応でつながります。
| Stage 2 の概念 | Stage 3 の置き場 | さくら商事の例 |
|---|---|---|
| SSOT マート | DWH 上の Gold / mart | mart_finance_monthly_sales |
| 生ログ・SaaS エクスポート | レイク(Bronze 相当) | 返品 CSV、広告ログ |
| セマンティックレイヤー | mart の上(LookML 等) | 公式売上指標 |
| メタデータ | カタログが指す物理テーブル | カタログ → mart_finance |
lake に何でも放り込むと、田中さんの個人 CSV と鈴木さんの ETL が同じ「置き場」に混ざり、正本が見えなくなります。柔軟さとルール はセットです。
まとめ
| 層 | キーフレーズ | さくら商事の注意 |
|---|---|---|
| レイク | 生データ保管、規約必須 | 個人 backup 禁止 |
| DWH | 分析向け整形・履歴 | BigQuery core |
| マート | 用途別、SSOT の実体 | mart_finance = 公式売上 |
この章のキーメッセージ:
lake・DWH・マートは 階層の名前 であり、全部 BigQuery に入っていれば同じ、ではありません。 誰が何を触り、どこが公式か を層で分けると、Stage 1 の症状が再発しにくくなります。
次に読む
- 前章: OLTP と OLAP
- 次章: Bronze / Silver / Gold
- 関連: データマート(analytics)
- 関連: スタースキーマ(analytics)
確認問題
問題 1
S3 に tanaka_backup/orders.csv が置かれていた。
最も適切な分類と対応 はどれですか。
A. 公式データマート。Looker にそのまま接続
B. レイクのルール違反(個人コピー)。削除し、正規 ETL 経路を使う
C. OLTP 本番 DB の代替
D. メタデータカタログの正本
正解: B
解説: 個人バックアップは SSOT 崩壊とセキュリティリスク です。lake でも許容すべきではありません。
問題 2
「BigQuery に全部入っているから、レイクも DWH もマートも同じ」という発言について。
A. 正しい。物理的に同じ DB なら区別不要
B. 誤り。物理配置と 論理層(生/raw vs 整形 vs 用途別提供) は別概念
C. 誤り。マートは Excel のみ
D. 正しい。区別はベンダー marketing のみ
正解: B
解説: 同一 BigQuery プロジェクト内でも、raw_ads と mart_finance は 役割が違います。層の名前はガバナンスと利用者体験のためのものです。
問題 3
経営会議用の公式売上を出すとき、最初に参照すべき 置き場所はどれですか。
A. S3 の生 CSV
B. OLTP 本番 orders
C. mart_finance(DWH 上の公式マート)
D. 個人 Google Sheets
正解: C
解説: 会議数字は マート + セマンティックレイヤー 経由が SSOT 設計です。A/B はソース層、D は野良マートです。
用語メモ(この章)
| 用語 | 意味(この章での使い方) |
|---|---|
| データレイク(Data Lake) | 生データを低コストで大量保管する層 |
| DWH | 分析向けにスキーマ化・履歴管理したデータベース |
| データマート(Data Mart) | 部門・用途別に使いやすくした分析用表 |
| staging | DWH 内の取込直後・加工前の領域(次章でメダリオンと対応) |
| 野良マート | オーナー不明・非公式の分析用表や Sheets |