ふくふくHukuhuku Inc.
EP.16Foundation 13分公開: 2026-09-01

セマンティック層へ移行する ── 二重管理を作らずに進める

既存の定義が各所に散らばった状態から、どう集約するか。一斉に切り替えるのは無理なので、並行期間ができます。そこで二重管理を作らない方法を扱います。

#データ基盤#セマンティック層#移行#dbt
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

EP.14 で、データ層とセマンティック層を分ける設計を扱いました。ただし現実には、すでに定義が各所に散らばった状態から始まります。

この回は、その移行の進め方を扱います。要点は、並行期間に二重管理を作らないことです。 を目指す移行なのに、その過程で情報源を増やしてしまう ── これが最も避けたい失敗です。

1. 散らばっている場所を洗い出す

まず現状を把握します。同じ指標の定義が、いくつの場所にあるかを数えます。

定義が散らばっている場所
場所見つけ方よくある状態
BIツールの計算式レポートの定義を出力最も多い
個人の集計クエリ実行履歴から抽出把握しきれない
表計算のファイル共有ドライブを探す存在自体に気づかない
アプリのコードリポジトリを検索定義が埋め込まれている
定期処理の中処理の定義を確認変更されにくい

3行目が最も厄介です。表計算のファイルにある定義は、探しようがありません。移行の対象から漏れ、後から食い違いの原因として発覚します。

全部を見つける必要はない

完全な洗い出しは不可能です。主要な場所を押さえて移行を始め、後から出てきたものを順次取り込むという進め方が現実的です。完全な把握を待つと、いつまでも始まりません。

2. 食い違いを可視化する

洗い出したら、同じ名前の指標が、実際に同じ値になるかを確認します。ここで移行の必要性が数字で示せます。

同じ名前の指標を、定義ごとに計算して比べる
SQL
-- 「月間の売上」が、定義によっていくつになるかを並べるWITH base AS (    SELECT * FROM prod.raw.orders    WHERE order_date >= '2026-08-01' AND order_date < '2026-09-01')SELECT '定義A: 全件の合計'                AS 定義,       SUM(amount)                        AS 金額 FROM baseUNION ALLSELECT '定義B: キャンセルを除く',       SUM(amount) FROM base WHERE status <> 'cancelled'UNION ALLSELECT '定義C: 税抜き',       SUM(amount - tax) FROM base WHERE status <> 'cancelled'UNION ALLSELECT '定義D: 返品も除く',       SUM(amount - tax) FROM base       WHERE status NOT IN ('cancelled', 'returned')ORDER BY 金額 DESC;

同じ「月間の売上」で、4つの値が出るという結果を示せると、移行の議論が進みます。「定義を揃える必要がある」という主張より、実際に食い違っている数字のほうが説得力があります。

そして、どれが正しいかを決めるのは技術の仕事ではありません。事業側と合意する必要があります。この合意形成こそが、移行作業の本体だと考えてください。技術的な移行は数日で終わりますが、「売上とは何か」の合意には数週間かかることがあります。見積もりのときに、この時間を計算に入れてください。

3. どこから移行するか

全部を一度に移すのは無理です。優先順位をつけます

移行の優先順位
優先度対象理由
最優先食い違いが起きている指標問題が顕在化している
使用頻度が高い指標効果が大きい
複数部門で使われる指標合意の価値が高い
1人しか使っていない指標そのまま残してもよい
対象外一時的な分析移す必要がない

最下2行を対象外にできるのが重要です。全部を移す必要はありません。EP.14 で扱ったとおり、組織で共有すべき定義を置く場所であって、すべての集計を置く場所ではありません。個人の一時的な分析まで移そうとすると、移行が終わらないうえに、層が肥大化します。

4. 並行期間の設計

ここが最も重要です。移行中は新旧が並存します。この期間に二重管理を作らないための原則があります。

  1. 1正はどちらか、を1つに決める — 両方を正としない
  2. 2新しい定義で、旧と同じ結果が出ることを確認する — 差があれば理由を特定
  3. 3旧を新の参照に置き換える — 定義を複製しない
  4. 4切り替えたら、旧の定義を書き換えない — 変更は新側のみ
  5. 5参照がゼロになったら旧を消す — 記録で確認

3番目が要点です。旧のレポートを消さずに、その定義だけを新しい層への参照に差し替える。こうすると、定義は1箇所のままで、見た目は変わりません。利用者から見て何も変わらないという点が重要で、移行への抵抗が生まれにくくなります。

「同じ定義を両方に書く」を避ける

並行期間中に同じ計算式を新旧両方に書くと、二重管理が生まれます。片方だけ更新されて食い違う ── これは移行前より悪い状態です。必ず参照にしてください

5. 結果が違ったとき

移行してみると、新旧で結果が違うことがあります。よくある原因を並べます。

新旧で結果が違う原因
原因確認方法
除外条件の違いキャンセル・返品・テストデータの扱い
期間の定義締め日、タイムゾーン
税や手数料の扱い含むか含まないか
重複の扱い同一人物の数え方
アクセス制御見えている範囲が違う(EP.15)

最下行を忘れないでください。制御が入っていると、実行する人によって結果が違います。EP.15 で扱ったとおり、これは調査を難航させる原因です。同じ権限で比較してください。

そして重要なのは、違いが見つかったときに「新しいほうが正しい」と決めつけないことです。旧の定義に、書かれていない業務上の理由があるかもしれません。必ず事業側に確認してください。

6. 移行後に保つ

移行しても、放っておけばまた散らばります。新しい定義を各所で作られないための仕組みが要ります。

  • 新しい指標は、セマンティック層に追加する — 手順として決める
  • BIツールでの計算式の追加を制限する — 可能なら
  • 定期的に、新しい定義が生まれていないか確認 — 棚卸し
  • 追加が面倒だと散らばる手続きを軽くする

4番目が最も実務的です。セマンティック層への追加が面倒だと、人は手元で計算します。承認に何日もかかる仕組みにすると、確実に迂回されます

データ屋の道具箱 EP.22 でも書きましたが、維持できない仕組みは迂回されます。厳密さより、続けられる軽さを優先してください。

ここまでのまとめ

完全な洗い出しは不可能なので、主要な場所から始めて順次取り込む食い違いを数字で示すと議論が進む(同じ「売上」で4つの値が出る)。並行期間は定義を複製せず、旧から新を参照する形にする。結果が違ったら「新しいほうが正しい」と決めつけず、事業側に確認する。そして追加の手続きが重いと迂回されるので、軽く保ってください。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp