青の統計学-DS Playground-

レイク・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、経営

次の図は、さくら商事のデータが どの段階で形を変えるか の全体像です。

flowchart LR accTitle: レイク(貯水池)→DWH(浄水)→マート(蛇口)の流れと利用者ラベル accDescr: レイクは柔軟な保管、DWH は分析向け整形、マートは利用者に近い提供層。 LAKE["データレイク
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 の症状が再発しにくくなります。


次に読む


確認問題

問題 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_adsmart_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