SHOEISHA iD

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

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

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

多次元データベースクエリー言語「MDX」入門
~MDX構文の基本文法(1)

第1回

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

2)ディメンションのメンバー、階層、レベル

 前述のとおり、キューブとは「多次元に構造化されたデータそのもののかたまり」です。MDX言語では、キューブからデータを取得する際に「目的のセルまたはセルのかたまり(セルブロック)の、ディメンション内での位置」を指定する必要があります。

図9:セルとセルブロックのイメージ図
図9:セルとセルブロックのイメージ図

 では最も簡単な例でディメンション内の位置を指定してみましょう。

例1:MDXによるディメンション内の位置の指定

「液晶テレビ」という商品の指定
[SHOHIN].[SHOHINMEI].[液晶テレビ]
「家電製品」という商品分類の指定
[SHOHIN].[SHOHINBUNRUIMEI].[家電製品]

 キューブでは、ディメンション内のデータ分類(この例の[SHOHINMEI][SHOHINBUNRUIMEI])のことをディメンションの「属性」と呼び、個別のデータ値(この例の「液晶テレビ」や「家電製品」)のことをディメンションの「メンバー」と呼びます。

 つまり、最も簡単なディメンション内の位置の指定は次のように定義できます。

 [ディメンション名].[属性名].[メンバー]

 ディメンション内の位置指定の記述は、その各要素を[]で括り、ピリオド(.)でつなげます。ここで注意して頂きたいのですが、同じ[]で括っているにもかかわらず、その意味するものが各要素ごとに異なっている、という点です。記述位置により、ディメンションだったり、属性だったり、メンバーだったりしています。

 上記の例は最も簡単な指定なのでそれほど混乱しませんが、ディメンションには「階層」という概念があり、この、「階層を含むディメンションの位置指定」を行う場合はちょっと注意が必要です。

例2:ディメンション内の階層を含む位置の指定

「2009年の2月」の指定
[URIAGE DATE].[YYYY-MM-DD].[2009年].[02月]
「2009年2月の月末日」の指定
[URIAGE DATE].[YYYY-MM-DD].[2009年].[02月].LASTCHILD
「東京都の顧客すべて」の指定
[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[東京都].CHILDREN
「顧客が存在している全都道府県」の指定
[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[TODOFUKEN].MEMBERS

 この例では、「LASTCHILD」や「CHILDREN」などの関数(MDXでは、「関数(引数)」と記述する関数と、「.関数」と記述する関数があります)が出てきました。これが何を意味するかの解説は後ほど詳述します。ひとまずここではディメンション指定の各要素の違いについて考えましょう。

 階層を含むディメンション内の位置指定は次のようになります。

[ディメンション名].[階層名].[メンバー](.[メンバー] …)(.関数等)
[ディメンション名].[階層名].[レベル名].関数

 前述例の[URIAGE DATE][TOKUISAKI]はディメンションを示しています。次の[YYYY-MM-DD][TODOFUKEN-TOKUISAKI]は何を示しているのでしょうか?

 前ページの例ではこの位置にはディメンションの属性を示していましたが、この例の場合は「階層の名前」を示しています。さらに最後の例では[TODOFUKEN]は「階層のレベル名」を示しています。

 このように、同じ括弧で括られ、ピリオドでつなげられた一見同じような記述であっても、それぞれの要素が何を示しているかはディメンションの構造によってまったく異なっていることに注意してください。

 なお、SQL Server Analysis Servicesでは、これらディメンション内の位置指定(多くの場合はメンバーの指定)の際、記述のかなりの部分を省略できます。メンバー指定の場合、そのメンバーが特定できる限り最小限の記述でも正常に解釈されます。

 例えばサンプルキューブでは、[TOKUISAKI].[TODOFUKEN].[東京都]を省略した次のような記述も可能です。

最小限の記述でメンバーを指定
[TOKUISAKI].[東京都]
[東京都]

 このように、MDXではかなり過度な省略が可能です。しかし、最初に覚える段階でこのような省略形は理解の妨げになり得ます。このため、本書では極力省略しない記述での解説を行います。

次のページ
3)タプル

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング