MDXを使用したデータの分析および管理

MDX (マルチディメンショナル式)は、強力なデータ操作/問合せ言語です。

MDXを使用して、次のことができます。

  • Essbaseキューブに対するデータとメタデータの問合せおよび報告

  • Essbaseキューブへのデータの挿入

  • Essbaseキューブからのデータのエクスポート

MDX問合せは、1つの結果セットを対象として単一のキューブに適用される単一のMDX文です。

MDXレポートは、キューブ・コンテキストに保存された単一のMDX問合せです。MDXレポートには、Smart ViewおよびEssbase Webインタフェースからアクセスできます。

MDXスクリプトは拡張子.mdxのファイルで、これをアップロードして、「ジョブ」またはSmart Viewから実行できます。MDX挿入およびMDXエクスポートの文のみ、MDXスクリプトで使用する必要があります。グリッド・データを分析するには、MDXスクリプトではなくMDXレポートを使用します。

トピック:

MDXレポートを使用したデータの分析

MDXレポートを使用して、Essbase Webインタフェースで問合せを格納およびレンダリングできます。レポートの作成に必要な最低限の権限は、「データベース・マネージャ」です。

「アド・ホック分析」タブを使用したレイアウトの定義は、高度なレポートを作成するための常に最も効率的な方法とはかぎりません。問い合せる対象が正確にわかっている場合は、MDXを使用して、グリッドに移入するための問合せを作成できます。

MDXレポートを作成するには:
  1. Essbase Webインタフェースに「データベース・マネージャ」以上のロールとしてログインします。
  2. 「データの分析」に移動します:
    • Redwoodインタフェースで、アプリケーションを開き、データベース(キューブ)を開いてから、「データの分析」をクリックします。
    • クラシックWebインタフェースで、アプリケーションを展開し、キューブを選択してキューブ名の右にある「アクション」メニューをクリックし、「データの分析」を選択します。
  3. 「分析」ビューで、「レポート」タブを選択して「作成」をクリックします。
  4. レポートの名前および説明(オプション)を入力します。
  5. 「問合せ」フィールドに、現在のキューブに関連するMDX問合せを入力します。例:
    SELECT
      {([West].children)}
    ON COLUMNS,
      {([Diet].children)}
    ON ROWS
    

    問合せには、行と列の両方の軸指定が含まれている必要があります。つまり、問合せ構文には、ON COLUMNSとON ROWSのいずれかの軸に空集合{}のみが指定される場合でも、両方が指定されている必要があります。

    「データの分析」のコンテキストがアクティブなキューブであるため、オプションのキューブ指定(FROM句)をMDXレポートから省略することをお薦めします。FROM句を省略するとさらに柔軟性が高くなり、キューブをコピーまたは名前変更した場合でも、新しいキューブでレポートが動作します。

    MDXレポートで代替変数はサポートされていますが、ランタイム代替変数はサポートされていません。ランタイム代替変数を使用するには、MDX問合せをスクリプトとして保存し、Smart Viewから「Essbase」リボンの「計算」を使用して実行してください。

  6. 「検証」をクリックしてMDX構文を確認してから、「保存」をクリックします。
  7. 左側の「レポート」パネルから、保存したレポートを選択してグリッドにレンダリングします。

MDXについてさらに学習するには、「MDX」および「MDX問合せの記述」を参照してください。

MDXレポートへのアクセス

レポートを使用する方法はキューブ・アクセスによって異なります。

少なくとも、データベース・アクセスのアプリケーションレベルのロールを持つユーザーは、他のユーザーが作成した保存済MDXレポートをレンダリングできます。レポートで表示されるデータはユーザーのフィルタ・アクセスによって異なります。

保存済レポートのレンダリングに加えて、データベース・アクセス・ユーザーは、HTML、CSV、ExcelおよびJSONなど、様々な形式で結果セットをエクスポートできます。

データベース・アクセス・ユーザーは、レポート名の横にある「アクション」メニューをクリックしてから「表示」を選択して、レポートを定義するMDX問合せを表示することもできます。

少なくともデータベース・マネージャのロールを持っている場合、データベース・アクセス・ユーザーと同様にレポートを使用できます。また、「アクション」メニューを使用してレポートを編集および削除できます。

サービス管理者の場合、さらに、「次として実行」ボタンを使用すると、他のユーザーに偽装し、データ・アクセスを確認できます。これは、様々なユーザーに割り当てられたフィルタをテストする際に役立つことがあります。

MDXレポートの例

この項のMDXの例は、「アド・ホック分析」ビューでは簡単に実行できない、MDXレポートを使用して実行できる特別なタイプの分析を示します。

次の例は、Sample Basicキューブで使用するために設計されています。

メタデータ・レポート

次の例は、メタデータのみを返します(メンバー名を返し、データは返しません)。

SELECT 
  {[Product].Levels(1).Members} 
ON ROWS, 
  {} 
ON COLUMNS

グリッドを返す:

レポートの出力に、Productメンバー100、200、300、400およびDietが表示されます

属性レポート

次の例では、列に属性ディメンションのメンバーを使用します。

SELECT 
 [Product].Children 
ON ROWS, 
 [Ounces].Children 
ON COLUMNS 
WHERE {Sales}

グリッドを返す:

レポートの出力の行に、Productメンバー100、200、300、400およびDietが表示されます。列には、属性メンバーOunces_32、Ounces_20、Ounces_16およびOunces_12が表示されます

フィルタされたレポート

次の例では、スライサ(WHERE句)を使用して問合せをColaに限定しています。さらに、Filter関数が、問合せのレベル0の市場を負の利益を持つ市場に限定しています。

SELECT
  { Profit } 
ON COLUMNS,
  Filter( [Market].levels(0).members, Profit < 0) 
ON ROWS
WHERE {Cola}

グリッドを返す:

レポートの出力の行に、MarketメンバーOregon、Utah、Nevada、Oklahoma、Louisiana、Ohio、Wisconsin、MissouriおよびIowaが表示されます。列にはProfitが表示されます。データ値はすべて負です。

UDAレポート

次の例は、ユーザー定義属性(UDA) "Major Market"を持つMarketディメンション・メンバーのProductデータを示しています。スライサ(WHERE句)が、Salesデータのみを含むように問合せを限定しています。

SELECT 
  [Product].Children 
ON ROWS, 
  {Intersect(UDA([Market], "Major Market"), [Market].Children)} 
ON COLUMNS 
WHERE {Sales}

グリッドを返す:

レポートの出力の行に、Productメンバー100、200、300、400およびDietが表示されます。列には、主要市場のEastおよびCentralが表示されます。

MDXを使用したデータの挿入およびエクスポート

MDXは、グリッドベースの分析に役立つのみでなく、マルチディメンショナル・データのサブセットをコピーおよび更新する目的でも使用できます。

MDX挿入句を使用すると、MDXを使用して定義した計算済(非物理)メンバーを使用して、キューブをデータで更新できます。

MDXエクスポート句を使用すると、問合せ結果をデータのサブセットとして保存およびエクスポートし、後で表示またはインポートできるようにすることができます。

MDX挿入およびMDXエクスポートの各文は、保存済のMDXスクリプトとして実行できます。

MDX挿入およびエクスポートについてさらに学習するには、「MDX挿入の指定」および「MDXエクスポートの指定」を参照してください。

MDXスクリプトの実行

データの挿入またはエクスポート操作を実行する必要がある場合、MDXスクリプトを使用します。

グリッド・データの分析の場合、MDXレポートを使用します。MDXレポートを使用したデータの分析を参照してください。

MDXスクリプトを使用するには、ワークフローを選択します。

MDXスクリプトの記述、アップロードおよび実行

このワークフローを使用して、MDXスクリプトをテキスト・エディタで記述し、そのスクリプトをEssbaseにアップロードします。

  1. MDXスクリプトをテキスト・エディタで記述し、.mdx拡張子を付けて保存します。

  2. Essbase Webインタフェースの「ファイル」の下にあるアプリケーションまたはキューブ・ディレクトリにMDXスクリプトをアップロードします。

  3. 「ジョブ」からMDXスクリプトを実行します。または、Smart Viewから「Essbase」リボンの「計算」を使用して実行します。

スクリプト・エディタでのMDXスクリプトの記述および実行

このワークフローを使用して、MDXスクリプトをキューブのスクリプト・エディタで記述し、そのスクリプトを「ジョブ」から実行します。

  1. 「アプリケーション」ページでアプリケーションを開き、データベース(キューブ)を開きます。

  2. 「スクリプト」をクリックし、次に「MDXスクリプト」をクリックします。

  3. 「作成」をクリックし、スクリプトの名前を入力して「OK」をクリックします。

  4. MDXスクリプトを記述します。メンバー・ツリーと関数リストを参考に作業してください。

  5. スクリプトを検証して保存し、スクリプト・エディタを閉じます。

  6. 「ジョブ」からMDXスクリプトを実するか(「MDXの実行」を参照)、Smart Viewを使用している場合は、Essbaseリボンの「計算」を使用して実行します。

  1. アプリケーション・ページで、アプリケーションおよびキューブを展開します。

  2. キューブの「アクション」メニューで「検査」をクリックします。

  3. 「スクリプト」「MDXスクリプト」の順にクリックします。

  4. 「+」をクリックしてスクリプト・エディタを開きます。

  5. MDXスクリプトを記述します。メンバー・ツリーと関数リストを参考に作業してください。

  6. スクリプトを検証して保存し、スクリプト・エディタを閉じます。

  7. 「ジョブ」からMDXスクリプトを実するか(「MDXの実行」を参照)、Smart Viewを使用している場合は、Essbaseリボンの「計算」を使用して実行します。

キューブ・デザイナにおけるMDXスクリプトの作成および実行

このワークフローでは、アプリケーション・ワークブックを使用してMDXスクリプトを作成し、そのスクリプトを「ジョブ」から実行します。

  1. アプリケーション・ワークブックで、MDXワークシートを作成します。キューブ・デザイナでのMDXワークシートの操作を参照してください。
  2. 「ファイル名」フィールドにファイル名を追加します。
  3. 「MDXの実行」フィールドに、キューブの作成時にMDXを実行するかどうかを指定します。有効なエントリは「はい」「いいえ」です。
  4. 「スクリプト」行の下にMDXスクリプトを追加します。
  5. アプリケーション・ワークブックを保存します。
  6. キューブを構築します。キューブ・デザイナでのアプリケーションとキューブの作成を参照してください。
  7. 「ジョブ」からMDXスクリプトを実行するか、Smart Viewを使用している場合は、Essbaseリボンの「計算」を使用して実行します。

MDXスクリプトのガイドライン

MDXスクリプトを扱う際には、次のガイドラインに従ってください。

  • データの挿入またはエクスポート操作を実行するためにMDXスクリプトを使用します。

  • グリッド分析の場合、MDXスクリプトではなくMDXレポートを使用します。

  • MDXスクリプトにはオプションでランタイム代替変数を含めることができます。

    • ランタイム代替変数を含むMDXスクリプトをSmart View内で利用するには、SET RUNTIMESUBVARS計算コマンド内でXML構文を使用し、その中に<RTSV_HINT>を含める必要があります。

    • ランタイム代替変数を設定して、Smart Viewで表示可能なデータ・スライスのみが計算されるようにするには、ランタイム代替変数の値をPOVに設定し、データ型をmemberに設定します。

    • MDXスクリプトをEssbase Webインタフェースから実行する場合、代替変数は使用できますが、ランタイム代替変数は使用できません。MDXスクリプトでランタイム代替変数を使用するには、Smart Viewから「Essbase」リボンの「計算」を使用してスクリプトを実行する必要があります。

代替変数の使用

MDXスクリプトの例

次に、「ジョブ」またはSmart Viewのいずれかを使用して、Sample Basicキューブに対して実行可能なMDXスクリプトの例を示します。

MDX挿入

この.mdxスクリプトを保存し、「ジョブ」またはSmart View「計算」ダイアログから実行できます。

INSERT "([Measures].[Payroll])" TO "([Measures].[Revised_Payroll])"
INTO [Sample].[Basic]
FROM (
       SELECT 
            {[Measures].[Payroll]} ON COLUMNS,
                {Crossjoin
                  (Crossjoin(Descendants([Year]), 
                   Crossjoin(Descendants([Scenario]),
                  Descendants([Product]))),
                  Descendants([Market]))} ON ROWS
       FROM [Sample].[Basic]
);

前述の例は、以前Revised_PayrollメジャーをSample Basicに追加したことを前提としています。

MDXエクスポート

この.mdxスクリプトを保存し、「ジョブ」またはSmart View「計算」ダイアログから実行できます。

EXPORT INTO FILE "sample01" OVERWRITE
SELECT 
 {[Mar],[Apr]} 
ON COLUMNS,
 Crossjoin({[New York]},
  Crossjoin({[Actual],[Budget]},
     {[Opening Inventory],[Ending Inventory]})) 
ON ROWS
FROM [Sample].[Basic]
WHERE ([100-10])

スクリプトを実行すると、エクスポート・ファイルsample01.txtがファイル・カタログのキューブ・ディレクトリに保存されます。

Market,Scenario,Measures,Mar,Apr
New York,Actual,Opening Inventory,2041,2108
New York,Actual,Ending Inventory,2108,2250
New York,Budget,Opening Inventory,1980,2040
New York,Budget,Ending Inventory,2040,2170

ランタイム代替変数を使用したMDXエクスポート

この.mdxスクリプトを保存し、Smart View「計算」ダイアログから実行できます。

SET RUNTIMESUBVARS
{
 States = "Massachusetts"<RTSV_HINT><svLaunch>
                    <description>US States</description>
                    <type>member</type>
                    <allowMissing>false</allowMissing>
                    <dimension>Market</dimension>
                    <choice>multiple</choice>
                    </svLaunch></RTSV_HINT>;
};
EXPORT INTO FILE "sample002" OVERWRITE
SELECT
 {[Mar],[Apr]}
ON COLUMNS,
 Crossjoin({&States}, Crossjoin({[Actual],[Budget]},
 {[Opening Inventory],[Ending Inventory]}))
ON ROWS
FROM [Sample].[Basic]
WHERE ([100-10])

スクリプトを実行すると、エクスポート・ファイルsample002.txtがファイル・カタログのキューブ・ディレクトリに保存されます。

Market,Scenario,Measures,Mar,Apr
Massachusetts,Actual,Opening Inventory,-54,-348
Massachusetts,Actual,Ending Inventory,-348,-663
Massachusetts,Budget,Opening Inventory,-160,-520
Massachusetts,Budget,Ending Inventory,-520,-910