SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

難解クエリー言語「MDX」に挑戦

多次元データベースクエリー言語「MDX」入門
~MDX構文の記述方法(2)

第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

3)データの抽出とスライサ

 MDXではデータ抽出の考え方がSQLと大きく異なります。SQLでは「データの検索条件」をWHERE句に記述しますが、MDXの場合は「スライサ」と「フィルタ」の2通りの考え方でデータを絞り込みます。

スライサ

 元のキューブから、必要な部分を「切り取る」のがスライサです。あくまで「切る」という行為であることに注意してください。キューブを「切る」のですから、1つ以上のディメンションから、それぞれメンバーを指定します。

スライスイメージ1
スライスイメージ1
スライスイメージ2
スライスイメージ2

 このようにキューブを「切り取り」ます。SQLのWHERE句のように等号などの演算子を使用してデータの値に条件を付けるのではないことに注意してください。

フィルタによるデータ抽出

 SQLで言う「検索条件」に感覚的に近いのは、「スライサ」よりも「フィルタ」かもしれません。フィルタはWHERE句ではなく、SELECT句でディメンションの指定をする際にFILTER関数として記述します。

 構文:FILTER ( セット,条件式 )

 例として、「2009年7月の売上金額が50,000円以上の顧客」を抽出してみます。

例3:「2009年7月の売上金額が50,000円以上の顧客」を抽出
SELECT	{ [Measures].[URIKINGAKU]
	} ON COLUMNS,
	{ FILTER([TOKUISAKI].[TOKUIMEI].CHILDREN,
[Measures].[URIKINGAKU]>50000)
} ON ROWS FROM [Sales] WHERE ([URIAGE DATE].[YYYY-MM-DD].[2009年].[07月])

 実行結果は次のようになります。

実行結果
実行結果

 このMDXで注意して頂きたいのは次の2点です。

(1)縦軸と横軸に同じディメンション(メジャー)が登場している

 MDXの基本構文には、「異なる軸で同じディメンションを指定することはできない」というルールがあります。しかしこのMDXでは縦軸と横軸の両方にメジャーディメンションが指定されています。なぜこのような記述が許されるのでしょうか?

 その理由は、このFILTER関数の戻りセットが[TOKUISAKI]ディメンションであり、メジャーディメンションではないからです。FILTER関数の2つ目のパラメータである[Measures].[URIKINGAKU]>50000という条件式でメジャーディメンションを使用していますが、これはあくまで[TOKUISAKI]ディメンションのメンバーを絞り込むための条件に過ぎないため、他の軸で指定したディメンションを使用しても何ら問題ありません。

(2)FILTER関数の条件式を評価する対象は指定したセットのメンバー単位である

 FILTER関数では第1パラメータでセットを指定しますが、その構成メンバーが階層構造の途中のレベル(商品ディメンションにおける「商品分類」など)である場合、そのレベルでの集計値が評価の対象となります。つまりSQLで使用するGROUP BYHAVINGの考え方が、階層構造化したディメンションでは自動的に判断されます。

 従って、例3の

FILTER( [TOKUISAKI].[TOKUIMEI].CHILDREN,
[Measures].[URIKINGAKU]>50000)

 という記述は、スライサ部分とあわせて、「2009年7月の顧客別売上合計金額が5万円を超えている」という意味になります。

まとめ

 今回はMDXの基本構文を解説しました。次回はクエリー結果の整形についていくつかの手法を解説します。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
難解クエリー言語「MDX」に挑戦連載記事一覧

もっと読む

この記事の著者

大家 正巳(オオヤ マサミ)

株式会社ヴィバーク代表取締役。 システムアナリスト。 この度、当社では SQL Server Analysis Services に接続し、MDXの発行が可能な BIシステム構築ツール「CubeWalker」を開発しました。2009年10月より発売致します。 高速かつ安価なBIシステム作りに、是非お...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4335 2009/09/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング