4)セット
セットとは「1つ以上のタプルの組み合わせ」であり、クエリー実行結果の「軸」の形を指定するものです。セットの記述は各タプルをカンマ区切りで列挙し、{}
で括ります。
最もシンプルなタプルは1つのメンバーですから、最もシンプルなセットは1つのメンバーのみで構成されます。また、1つのセットに複数のタプルを指定する場合はそれらのタプルは同一ディメンションで構成されている必要があります。
では、サンプルキューブからセットをいくつか記述してみましょう。
表1の各セットについて解説します。
- No.1:メジャーの1つのメンバー
[SURYO]
のみで構成されています。クエリー結果の横軸として指定した場合、1つの列として表示されます。 - No.2:メジャーのメンバー
[SURYO]
と[URIKINGAKU]
の2つのメンバーで構成されています。クエリー結果の横軸として指定した場合、2つの列として表示されます。 - No.3:
[TOKUISAKI]
ディメンションの[TODOFUKEN]
属性の複数のメンバーから構成されています。クエリー結果の縦軸として指定した場合、複数の行として表示されます。 - No.4:1つのタプルで構成されています。タプルは
[SHOHIN]
ディメンション、[TOKUISAKI]
ディメンションおよびメジャーから、それぞれ1つずつのメンバーで構成されています。クエリー結果の横軸として指定した場合、タプルが列として表示されます。 - No.5:2つのタプルで構成されています。
[TOKUISAKI]
ディメンションは片方が東京都のみ、もう片方は「全県」の集計です。クエリー結果の横軸として指定した場合、それぞれのタプルが列として表示されます。このようにクエリー結果の軸を「非対称」にバラバラに指定できるのがタプルを使用したMDXの特徴です。
前述のように、セット内に複数のタプルがある場合、それらのディメンションは同一である必要があります。セットの記述と混同しやすいので注意が必要です。
例えば、以下の記述は無効となります。
{ [TOKUISAKI].[TODOFUKEN].[東京都], [Measures].[URIKINGAKU] }
異なるディメンションのタプル(この場合はメンバー)がセット内に複数指定されているからです。しかしこれが、
{ ( [TOKUISAKI].[TODOFUKEN].[東京都], [Measures].[URIKINGAKU] ) }
となると「『異なるディメンションが指定された1つの正常なタプル』から構成された正常なセット」であり、正しい記述になります。このように、カッコの種類や数でまったく意味が変わってしまうのがディメンション指定です。慣れるまでは混乱しがちですが、ディメンションの構造とクエリー結果の軸をイメージしながら正確に記述するよう心がけてください。
まとめ
今回はMDX構文の基本として、メジャーとディメンション、メンバー、タプルとセットの指定の仕方について解説しました。
次回はいよいよMDXの基本構文を解説します。
参考資料
- 『SQL Server Books Online - Microsoft』
- 『MDX Solutions』George Spofford・Sivakumar Harinath・Christopher Webb・Dylan Hai Huang・Francesco Civardi著、Wiley社、2006年3月