CUBEVALUE関数の使い方|Power PivotキューブからMDX式で集計値を取得する

スポンサーリンク

「ピボットテーブルの集計値をセルの数式で柔軟に参照したい」「Power Pivotのデータを条件を変えながら取得したい」――そんな高度な集計操作を実現するのが CUBEVALUE関数 です。

OLAPキューブやPower Pivotモデルと連携して、MDX(多次元式)で指定した集計値を返します。ピボットテーブルより柔軟にデータを参照できる、上級者向けの分析関数です。

この記事では基本的な使い方、MDX式の書き方のポイント、CUBE系6関数との関係を解説します。


CUBEVALUE関数とは?

読み方と語源

「キューブ バリュー」と読みます。CUBE(キューブ=多次元データ)+ VALUE(値)が語源で、多次元データソースから集計値を取得する関数です。

できること

Power PivotやSQL Server Analysis Services(SSAS)などのOLAPキューブに接続し、MDX式(多次元式)を使って指定した条件の集計値を返します。

  • Power Pivotモデルの集計値を任意のセルに表示する
  • ピボットテーブルに縛られない柔軟なレポートレイアウトを作る
  • 複数の次元(年・製品・地域など)を組み合わせた集計値を動的に取得する

対応バージョン:Excel 2007以降(Power Pivotはデータモデルとの接続が必要)


CUBEVALUE関数の書き方

基本構文

=CUBEVALUE( 接続, [メンバー式1], [メンバー式2], ... )

引数の説明

引数必須/任意説明
接続必須キューブへの接続名を文字列で指定します
メンバー式1〜任意取得する値の条件となるMDXメンバー式を指定します(最大複数指定可能)

複数のメンバー式を指定した場合は、その交点(すべての条件を満たす値)が返されます。


MDX式の基本

CUBEVALUE関数の肝は MDX(Multidimensional Expressions) 式の書き方です。

MDX式は角かっこ [] を使って階層とメンバーを表します。

[ディメンション名].[階層名].[メンバー名]

具体例

[時間].[年].[2024]      → 2024年のメンバー
[製品].[カテゴリ].[飲料]  → 製品カテゴリ「飲料」のメンバー
[Measures].[売上金額]    → 「売上金額」メジャー

基本的な使い方

例1:売上金額の合計を取得する

Power Pivotモデルに「Sales」という接続があり、2024年の飲料カテゴリの売上合計を取得する場合:

=CUBEVALUE("Sales", "[Measures].[売上金額]", "[時間].[年].[2024]", "[製品].[カテゴリ].[飲料]")

3つのメンバー式(売上金額 × 2024年 × 飲料)の交点値が返されます。

例2:Excel 接続の場合の書き方

Excelのデータモデル(Power Pivot)への接続名は「ThisWorkbookDataModel」が一般的です。

=CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計 / 売上]", "[製品テーブル].[カテゴリ].&[電化製品]")

例3:セル参照で動的に切り替える

=CUBEVALUE("ThisWorkbookDataModel", B1, B2)

B1・B2セルにメンバー式を入力しておけば、セルの値を変えるだけで取得条件を切り替えられます。


CUBEMEMBER関数との組み合わせ

CUBEMEMBER関数でメンバーを取得してから、CUBEVALUE関数で集計値を求めるパターンもよく使われます。

A1: =CUBEMEMBER("ThisWorkbookDataModel", "[製品テーブル].[カテゴリ].&[電化製品]")
B1: =CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計 / 売上]", A1)

A1の選択肢を変えることでB1の値が動的に変わります。


CUBE系6関数の役割と使い分け

CUBEVALUEはCUBE系関数の中の1つです。各関数の役割をまとめます。

関数返すもの用途
CUBEVALUE集計値(数値)メジャーの値を取得する中心的な関数
CUBEMEMBERメンバーオブジェクト次元メンバーを参照し、CUBEVALUEと組み合わせる
CUBESETセット(メンバーの集合)条件を満たすメンバーの集合を定義する
CUBESETCOUNTセットの件数CUBESETで定義したセットの要素数を返す
CUBERANKEDMEMBERランク順のメンバーセット内のN番目のメンバーを取得する
CUBEMEMBERPROPERTYメンバーのプロパティメンバーの属性情報(名前・説明など)を取得する

使い分けの基本

  • 集計値が欲しい → CUBEVALUE
  • どのメンバーを選ぶか指定する → CUBEMEMBER
  • 条件に合うメンバーを絞り込む → CUBESET + CUBERANKEDMEMBER

Power Pivotとの連携

Power PivotはExcel 2010以降で使えるデータモデル機能で、大量データの集計や複数テーブルの結合が得意です。

CUBEVALUE関数はPower Pivotのメジャーを直接セルから参照できるため、ピボットテーブルの形式に縛られない自由なダッシュボードを作れます。

Power Pivotとの連携手順(概要)

  1. 「データ」→「データモデルに追加」でテーブルをPower Pivotに読み込む
  2. Power Pivotウィンドウでメジャーを定義する(例:合計売上 = SUM(売上[金額]))
  3. =CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計売上]", ...) で参照する

よくあるエラーと対処法

エラー原因対処法
#NAME?接続名が存在しない、または正しくないExcelの接続マネージャーで接続名を確認する
#N/A指定したメンバーがキューブ内に存在しないMDX式の構文とメンバー名を確認する
#VALUE!MDX式の構文が正しくない[ディメンション].[階層].[メンバー] の形式を確認する

まとめ

CUBEVALUE関数のポイントをまとめます。

  • OLAPキューブやPower PivotモデルからMDX式で集計値を取得できる
  • 複数のメンバー式を組み合わせて、絞り込んだ集計値を得られる
  • CUBEMEMBER関数と組み合わせると、動的なダッシュボードが作れる
  • ピボットテーブルの形式に縛られない柔軟なレポート作成が可能になる

Power Pivotを使い始めた方は、まずCUBEVALUEとCUBEMEMBERの基本的な組み合わせから試してみてください。


関連記事

タイトルとURLをコピーしました