4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ活用入門:BIツールの「キューブ」とは?リレーショナルデータベースとの関係からざっくり理解する

4
Posted at

はじめに

BIツールに触れると、「キューブ」という言葉が出てきます。多次元分析、ディメンション、メジャー、OLAP。
リレーショナルデータベースを触ったことがあっても、データ分析の入り口では、こうした新しい言葉に次々と出会うことになります。

この記事は、キューブがどういうものか、そしてリレーショナルデータベース(RDB)とどういう関係にあるのかを整理したものです。 特定の製品の操作方法ではなく、どのBIツールにも共通する考え方の部分を扱います。

データベースの経験が少ない方でも読み進められるよう、Excelの集計表の話から始めています。 データ活用の用語を押さえるきっかけとして、少しでも参考になれば嬉しいです。

image.png

ざっくりまとめ

先に要点をまとめます。

  • キューブは、売上のような数値を「商品×店舗×月」など複数の切り口の組み合わせで事前に集計して持っておくデータ構造。BIツールの多次元分析を支えてきた仕組み
  • RDBとは競合ではなく分業の関係。RDBが元データの置き場、キューブはそこから作られる分析用の派生物
  • RDBの側で多次元分析に向けた設計をする定番がスタースキーマ。集計済みデータをどこに持つかの違いがMOLAP/ROLAP/HOLAP
  • 最近の分析基盤ではキューブそのものを構築する場面は減ったが、ディメンションやメジャーといった考え方は今もBIツールの土台になっている

キューブとは何か

■ クロス集計表を積み重ねる

Excelでよく作るクロス集計表(ピボットテーブル)で考えます。 行に商品、列に月を置いて、交わるマスに売上金額を集計する。 この表の軸は「商品」と「月」の2本です。

ここで「店舗ごとの違いも見たい」となると、Excelでは店舗の数だけ同じ表を作ることになります。 この「同じ形のクロス集計表を、店舗の数だけ積み重ねた束」を、まるごと1つのデータ構造として扱えるようにしたものが、キューブのイメージです。 軸が商品、月、店舗の3本になり、図に描くと立方体になるため、キューブ(cube:立方体)と呼ばれています。

(軸は3本とは限りません。4本以上でも同じ考え方で扱えます。この点は後半の「よくある誤解」で扱います。)

image.png

■ ディメンションとメジャー

キューブでは、この「軸」と「集計されるマスの数値」に名前が付いています。

  • ディメンション:分析の切り口になる軸。商品、店舗、時間など
  • メジャー:集計対象の数値。売上金額、販売数量など

BIツールの画面で「切り口をドラッグして、集計したい数値を選ぶ」という操作は、このディメンションとメジャーを選んでいます。

また、ディメンションには階層を持たせられます。 時間なら年、四半期、月、日。商品ならカテゴリ、商品名。 この階層が、次の操作で効いてきます。

image.png

■ キューブの代表的な操作

  • ドリルダウン/ロールアップ — 年→四半期→月のように、階層に沿って粒度を細かくする/粗く戻す
  • スライス — 1つのディメンションを特定の値で固定して、断面を切り出す(「2025年度」だけの商品×店舗の表)
  • ダイス — 複数のディメンションを条件で絞って、小さなキューブを切り出す
  • ピボット — 行と列の軸を入れ替えて、見る向きを変える

いずれも、ピボットテーブルで普段からやっている操作に対応します。 キューブは、この操作を大量のデータに対しても即座に返せるようにしたものです。 では、なぜ即座に返せるのか。キューブが生まれた背景から見ていきます。

image.png

なぜキューブが生まれたのか

■ RDBが得意な処理

リレーショナルデータベース(RDB)は、データを行と列の表で管理し、SQLで操作するデータベースです。 業務システムの裏側では、注文を1件登録する、在庫を1件更新する、といった処理が絶え間なく走っています。 このような、少量のデータを確実に読み書きする処理をOLTP(Online Transaction Processing:オンライントランザクション処理)と呼びます。 RDBは、この用途を中心に発展してきました。

■ 分析のクエリは性質が違う

一方、データ活用で投げたい問いは性質が違います。 「過去3年の売上を、商品カテゴリ別、地域別、月別に集計したい」。 SQLで書くと、例えば次のようになります。

SELECT p.category, s.region, c.year_month,
       SUM(f.sales_amount) AS total_sales
FROM sales f
JOIN products p ON f.product_id = p.product_id
JOIN stores   s ON f.store_id   = s.store_id
JOIN calendar c ON f.date_id    = c.date_id
GROUP BY p.category, s.region, c.year_month;

クエリ自体は普通のSQLです。 問題は読む量で、売上明細が数千万行あれば、集計のたびにそのほぼ全体を読み直すことになります。 切り口を変えるたびに、数十秒から数分を待つことになる。 しかも業務システムと同じデータベースに投げれば、注文登録などの本来の処理と資源を奪い合います。 このような、大量のデータをまとめて読んで集計する処理はOLAP(Online Analytical Processing:オンライン分析処理)と呼ばれ1、OLTPとは求められる性能の方向が異なります。

■ 答えを事前に用意しておく

そこで1990年代に広まったのが、「よく使う集計は、あらかじめ計算して別の場所に持っておく」 という考え方です。 商品カテゴリ×地域×月の全組み合わせについて、売上の合計を夜間バッチなどで先に計算しておく。 分析者がドリルダウンやスライスで切り口を変えても、返ってくるのは計算済みの値なので、待ち時間はほとんど発生しません。 この事前に集計された多次元のデータが、キューブの実体です。 キューブを格納して提供する専用のデータベースは、多次元データベースと呼ばれます。

(用語を整理しておくと、OLAPは「分析のための集計処理」という処理の性質を指す言葉で、キューブはOLAPを高速化するための代表的な実装です。両者はイコールではありません。)

キューブが何であるかと、生まれた理由を押さえました。 次に、このキューブとRDBのつながりを整理します。

リレーショナルデータベースとの関係

image.png

キューブとRDBの関係は、主に次の3つの面から整理できます。

■ 1:元データはRDBにある

キューブは、それ単体で成立するものではありません。 元になるのは、業務システムのRDBやデータウェアハウスに蓄積されたデータです。 そこから必要な列を取り出し、集計して、キューブを作ります。 この処理は夜間バッチなどで定期的に実行され、元データが更新されればキューブも作り直されます。

つまり、RDBが記録の置き場、キューブが分析のための派生物という役割分担です。

image.png

■ 2:RDBの表で多次元を表現する(スタースキーマ)

多次元の考え方は、専用のデータベースがなくてもRDBの表で表現できます。 その定番の設計がスタースキーマです。

  • ファクトテーブル — メジャー(売上金額、数量)と、各ディメンションへの参照を持つ表。行数が多い
  • ディメンションテーブル — 商品、店舗、日付といった切り口の情報を持つ表。行数は少ない

先ほどのSQLの例に出てきたテーブルが、ちょうどこの形です。 salesがファクトテーブル、products、stores、calendarがディメンションテーブルにあたります。

salesの中身は、例えばこのような明細の集まりです。

date_id store_id product_id sales_amount quantity
20250701 S001 P010 12,800 4
20250701 S002 P023 3,200 1
20250702 S001 P023 6,400 2

productsは、商品IDを商品名やカテゴリに読み替えるための表です。

product_id product_name category
P010 緑茶500ml 飲料
P023 チョコレート 菓子

ファクトテーブルを中心に、ディメンションテーブルが放射状につながる形を図に描くと星のように見えるため、スタースキーマと呼ばれます。

キューブの設計図を、RDBの語彙で書き直したものがスタースキーマだと言えます。

image.png

■ 3:集計済みデータをどこに置くか(MOLAP/ROLAP/HOLAP)

BI製品がキューブを実現する方式は、集計済みデータをどこに持つかで分かれます。

方式 集計済みデータの置き場 応答速度 データの鮮度
MOLAP(Multidimensional OLAP) 専用の多次元データベース 速い バッチ更新の分だけ遅れる
ROLAP(Relational OLAP) 持たない。操作のたびにRDBへSQLを発行して集計する RDBの性能に依存 常に最新
HOLAP(Hybrid OLAP) 集計値だけ多次元データベースに持ち、明細はRDBに残す 中間 中間

「キューブを構築する」と言うとき、狭い意味ではMOLAP方式を指しています。 主な製品には、Microsoft SQL Server Analysis Services(多次元モデル)やOracle Essbaseがあります。 一方でROLAPは、スタースキーマで設計したRDBそのものをキューブに見立てる方式で、独立した「キューブ」というデータは存在しません。

BIツールの画面から見ると、どの方式でも「ディメンションを選んでメジャーを集計する」という操作は同じです。 違うのは、その裏側で答えがどこから来るかだけです。

image.png

よくある誤解

■ 誤解1:「キューブは3次元まで」

図が立方体で描かれるため3次元の印象がありますが、ディメンションは4本以上でも扱えます。 その場合もキューブと呼ばれます(区別してハイパーキューブと呼ぶこともあります)。 3次元を超えると図には描けないため、説明用の絵が立方体になっているだけです。

■ 誤解2:「キューブがあればRDBは要らない」

両者は競合ではなく分業の関係です。 記録(1件ずつの確実な読み書き)はRDB、分析(大量の集計)はキューブと、担当する仕事が違います。 また、関係1で見たとおり、キューブの中身はRDB側のデータから作られます。 元データなしにキューブだけが存在することはありません。

■ 誤解3:「Excelのピボットテーブルと同じもの」

操作の考え方は同じですが、仕組みが違います。 ピボットテーブルは、手元のデータをその場で集計します。 データ量が増えると動作が重くなり、扱える行数にも上限があります。 キューブは、サーバー側で事前に集計した結果を返します。 元データが数億行あっても、画面の応答速度は保たれます。 「ピボットテーブルの操作感を、業務データの規模で成立させるための仕組み」と押さえておくと、両者の関係を説明しやすくなります。

■ 誤解4:「BIツールを使う=キューブを使っている」

キューブは、BIツールを支える方式のひとつであって、必須の部品ではありません。 現在のBIツールには、キューブを介さずにデータベースへ直接クエリを発行するものが多くあります。 この事情を次の章で扱います。

image.png

今のBIツールとキューブ

image.png

ここまでキューブの仕組みを説明してきましたが、正直に書いておくと、新しく作る分析基盤で「キューブを構築する」工程は減っています。

背景にあるのは、データベース側の進化です。

  • 列指向ストレージ — 分析専用のデータベース(クラウドのデータウェアハウスなど)は、データを列単位で格納する。集計に必要な列だけを読めばよいので、事前集計がなくても大量データのGROUP BYが実用的な速度で返る
  • 計算資源の分離 — クラウドでは、分析用のデータベースを業務システムと分けて用意し、必要なときだけ計算資源を増やせる。「業務処理と資源を奪い合う」問題が起こりにくくなった

かつてキューブが解決していた「集計が遅い」「業務と資源を奪い合う」という問題の多くを、データウェアハウス自体が解決するようになりました。 現在のBIツール(Power BI、Tableauなど)は、データウェアハウスへ直接クエリを発行するか、ツール内蔵の列指向エンジンにデータを取り込む方式が中心で、どちらもキューブを別途構築する工程を必要としません。

キューブ側の維持の手間も、この流れを後押ししました。 例えばカテゴリ10種×店舗50×36ヶ月でも組み合わせは18,000マスあり、ディメンションや階層を足すたびに掛け算で増えていきます。 どの切り口を事前集計に含めるかの設計と、元データが変わるたびの再計算が運用の負荷になり、「切り口を後から自由に変えたい」というセルフサービスBIの流れとは相性がよくありませんでした。

一方で、キューブが持っていた考え方は今も残っています。

  • ディメンションとメジャー — BIツールの画面はこの2分類のまま設計されている。フィールドをドラッグして集計する操作は、キューブ時代の語彙で動いている
  • スタースキーマ — データウェアハウスのテーブル設計の定番であり続けている
  • 事前集計 — マテリアライズドビューやBIツールの集計テーブル機能として、「よく使う集計を先に計算しておく」という発想は使われ続けている
  • セマンティックレイヤー — 「売上とはどの数値をどう合計した値か」といった指標の定義を一元管理する層。キューブが担っていた役割の一部を引き継いでいる

また、MOLAP型の製品が現役の領域もあります。 財務や予算管理の分野では、集計値の整合性が重視されることに加えて、計画値をセルに書き戻す使い方(ライトバック)があるため、Essbaseのような多次元データベースが使われ続けています。

image.png

まとめ

キューブとRDBの関係を、用語の対応で整理します。

キューブ側の用語 RDB側の対応物
メジャー ファクトテーブルの数値列(sales_amountなど)
ディメンション ディメンションテーブル(products、storesなど)
ドリルダウン GROUP BYに使う列を、階層に沿って細かい粒度に変えること
キューブ本体 スタースキーマのデータを事前集計して作る派生データ

キューブという部品そのものを構築する場面は、今後も減っていくかもしれません。 それでも、ディメンションとメジャーでデータを捉える見方は、BIツールを使う限り日常的に触れることになります。 データ活用に取り組む際の足がかりになれば幸いです。

image.png

参考

一次情報:

読み物:

Footnotes

  1. 「OLAP」という言葉は、リレーショナルモデルの提唱者であるE.F. Coddが1993年のホワイトペーパー「Providing OLAP to User-Analysts: An IT Mandate」で提唱したものです。RDBの生みの親が、分析用途には別のアプローチが必要だと論じたことになります。
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?