Tableau の LOD 表現が複雑すぎて誰も手を付けられなくなっていませんか?
FIXED、INCLUDE、EXCLUDE は、本来異なる粒度(Grain)が混在する集計を行うための強力な機能です。しかしワークブック内にある LOD 表現の大半は、データウェアハウス側でデータの粒度が揃っておらず、履歴が保持されていない穴埋めとして使われています。
このような課題はありませんか?
- 1 つのワークブックに多数の FIXED 表現が埋め込まれており、そのうち 1 つでも修正・削除するとビュー全体が破損する。
- 2 つ目のデータソースをブレンドした瞬間に、計算パフォーマンスが急激に悪化する。
- 特定時点における過去の値を復元するために LOD 表現を使っている。
- 計算フィールドのタブを触れるのが、最初にそれを作成した本人しかいない。
詳細レベル(LOD: Level of Detail)表現は、真に複数の粒度(Grain)が混在する集計課題に対する正当なアプローチです。しかし同時に、上流から届いたデータの粒度が狂っている場合の「緊急パッチ」としても多用されがちです。そしてワークブックを脆く壊れやすいものにしているのは、まさにこの後者の使われ方です。
LOD 表現が何を肩代わりしてしまっているのか
- 特定時点の状態の復元:
FIXEDと日付ロジックを組み合わせ、ソース側で上書きされて失われた履歴を再現している。 - 欠落したディメンションの補完: 結合すべき適切な主キーが存在しないため、連結キーに対して
FIXEDを実行している。 - 1 つのテーブル内に混在する 2 つの粒度: 適切に設計されたファクトテーブルであれば発生しないデータの重複を、
EXCLUDEで無理やり打ち消している。 - ブリッジテーブルのないリレーションシップ: 本来ブリッジテーブルが果たすべき多対多の解決を、
INCLUDEが肩代わりしている。
これらはすべて、ビューが表示されるクエリ実行時に毎回評価されます。さらに複数のデータソースをブレンドすると、その計算負荷は何倍にも跳ね上がります。
なぜその負担がアナリストに押し付けられるのか
- その場しのぎの LOD 表現はどれも、その週の締め切りまでに正しい数字を出すための最短ルートでした。
- それらのロジックはワークブックの内部に隠蔽されており、外部のエンジニアからレビューされることも再利用されることもありません。
- アナリストは計算式の書き方を工夫できても、上流のデータウェアハウスに存在しないディメンションを追加することはできません。
本来その処理が行われるべき場所
- 履歴管理、サロゲートキー、粒度の確定はウェアハウスの責務: LOD 表現の中でこれらを処理すると、ビューを描画するたびにゼロから再計算されます。
- 1 箇所の中央基盤に集約すべき: データウェアハウスやデータハブ側で 1 度だけ解決し、すべてのワークブックが標準化されたテーブルを参照すべきです。
- 「DWH の改修は高額で時間がかかる」と思われるかもしれませんが: その見積もりは手作業でパイプラインを構築することを前提としています。専用の自動化プラットフォームを活用すれば、モデルからパイプラインが自動生成されるため、必要なコストと期間は劇的に圧縮されます。
完成したモデルが届いたときに変わること
Datavault Builder は、Snowflake、Databricks、BigQuery、Synapse、SQL Server、Oracle、Exasol、PostgreSQL 上のデータウェアハウス内で粒度、キー、履歴を根本解決します。
- PIT(Point-in-Time)テーブル: 「3 月時点の数値」といった過去時点の問い合わせを、複雑な LOD 式ではなく、単純なテーブル結合で瞬時に返します。
- ブリッジテーブル: Tableau が接続する前に、多対多のリレーションシップを上流側で解決します。
- 明示的なサロゲートキー: 文字列連結によるあいまいな結合ではなく、単一キーによる高速なリレーションシップが確立されます。
- ファクトテーブルごとの単一の粒度: データの二重計上が原理的に発生しなくなるため、
EXCLUDEによる辻褄合わせが完全に不要になります。 - 残る LOD は真にビジュアライズに必要なものだけとなり、同僚がひと目で理解できるほどシンプルになります。
上流チームに何を要求すべきか
「現在の LOD 表現は、特定時点の状態の復元や粒度の不整合をクエリ実行時に無理やり解決するために使われています。計算式を単純な集計で済ませられるよう、ウェアハウス側で PIT テーブルと単一粒度のファクトテーブルを整備してもらえませんか?」
このように伝えることで、本来必要だった LOD 表現と、データ構造の不備を補うために無理やり使っていた LOD 表現を切り分け、根本解決に向かうことができます。
実際のデータで動作をご確認ください
無料デモをお申し込みいただき、最も課題を抱えているレポートをお持ち寄りください。
数値の整合性を保つための 3 つのステップ
-
既存のロジックを抽出
現在レポート内に点在している計算式、結合、フィルターを整理・収集します。
-
1 か所に集約・一元化
ロジックをデータウェアハウスモデルへ一度集約することで、すべてのレポートが同一の定義を参照します。
-
整合性のある正確な数値を実現
すべてのレポートで整合した数値が表示され、「この数値の出所はどこか」という疑問に明確に答えられるようになります。
Datavault Builder が完成したモデルをレポートに提供する仕組み
-
完成したモデルが即座に利用可能
Datavault Builder は Vault やスタースキーマを自動生成し、SQL Server、Azure SQL、Synapse、Fabric、Snowflake、Databricks、BigQuery など既存のデータベース上でネイティブに実行します。
-
レポート側の集計・変換作業を解消
マージ、パース、ファジーマッチなどの手間がレポート側から完全に不要になります。
-
ソースデータを統合した状態で提供
ERP、CRM、EC サイトなどの顧客データを整合性のあるディメンションに統合。結合処理はデータウェアハウス内で一度だけ行われ、各レポートで毎回繰り返す必要がなくなります。
-
いつでも過去時点のデータを遡及クエリ可能
すべての変更履歴が到着順にそのまま保持されるため、ソース側でレコードが上書き更新された場合でも、当時の状態(as-was)と現在の状態(as-is)の双方を正確にレポーティングできます。
-
すべての数値に明確なリネージを保持
ビジネスロジックにデータリネージが付与されるため、「この数値がどこから算出されたのか」をいつでも可視化できます。
-
上流でデータ変更を適切に処理
緩やかに変化するディメンション(SCD)は、近似処理ではなく、上流の Vault サテライトとして正確に管理されます。
専門家にご相談ください
弊社のセールスディレクターが 20 分間で、貴社の環境や要件に適合するか率直にお答えします。
Matt Collett
Sales Director
ご都合の良い日時をお選びください:
本シリーズで解説するその他の課題
-
Tableau Server 内で同じ指標の異なるバージョンが乱立していませんか?
公開された各 .tdsx ファイルは、作成された時点ではどれも合理的な判断によるものでした。しかし結果として、同じ指標に対して社内に何百通りもの独自定義が存在し、どれが正しいのか誰も判断できない状態に陥っています。
-
Tableau の抽出更新がタイムアウトや遅延を繰り返していませんか?
Tableau の Backgrounder がタイムアウトし、.hyper ファイルが肥大化し続け、ダッシュボードには昨日の古いデータが表示される。抽出が重い真の原因は、上流で集計されていない生のトランザクション行を Tableau 側で抱え込んでいることにあります。
-
Tableau ダッシュボードのフィルターを切り替えるたびに待たされていませんか?
フィルターを 1 つクリックするたびに「クエリを実行中…」が 20 秒間表示される。Tableau の描画エンジンが遅いのではありません。データベース側に、即答できない構造の質問が投げかけられていることが原因です。