4)Descendants()
構文:Descendants(メンバー,レベルまたは相対レベル数値,オプション)(戻り:メンバー)
第1パラメータで指定されたメンバーから下位階層レベルを第2パラメータで指定し、そのレベルから第3パラメータで指定したオプションによる上下のレベルのメンバーのセットを戻します。
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],
[URIAGE DATE].[YYYY-MM-DD].[MONTH],SELF)
または
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],1,SELF)
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],
[URIAGE DATE].[YYYY-MM-DD].[MONTH],AFTER)
または
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],2,AFTER)
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],
[URIAGE DATE].[YYYY-MM-DD].[MONTH],BEFORE)
または
Descendants([URIAGE DATE].[YYYY-MM-DD].[YEAR].[2008年],0,BEFORE)
第1パラメータで指定したメンバーから下位階層の全メンバーを対象とし、第2パラメータで指定したレベル(数値指定の場合は第1パラメータのメンバーからの相対レベル)を基準に、次のように第3パラメータを指定します。
- SELF:指定したレベルの全メンバー
- AFTER:指定したレベルより下位の全階層の全メンバー
- BEFORE:指定したレベルより上位の全階層の全メンバー
- BEFORE_AND_AFTER:指定したレベルの上位と下位の全階層の全メンバー
- SELF_AND_AFTER:指定したレベルと、それより下位の全階層の全メンバー
- SELF_AND_BEFORE:指定したレベルと、それより上位の全階層の全メンバー
- SELF_BEFORE_AFTER:指定したレベルと、上下位の全階層の全メンバー
- LEAVES:指定したレベルの全メンバーと、それより上位階層だが、下位階層レベルのメンバーを持たないメンバー(リーフ子孫メンバー)
5)Ancestor()
構文:Ancestor(メンバー,レベルまたは相対レベル数値)(戻り:メンバー)
第1パラメータで指定されたメンバーから第2パラメータで指定した上位階層レベルのメンバーを戻します。
Ancestor([URIAGE DATE].[YYYY-MM-DD].[2008年].[11月],
[URIAGE DATE].[YYYY-MM-DD].[YEAR])Ancestor([URIAGE DATE].[YYYY-MM-DD].[2008年].[11月].[11月1日],
[URIAGE DATE].[YYYY-MM-DD].[YEAR])
6)StrToMember()、StrToValue()、StrToSet()、StrToTouple()
構文:StrToMember(文字列)(戻り:メンバー)
StrToValue(文字列)(戻り:値)
StrToSet(文字列)(戻り:セット)
StrToTouple(文字列)(戻り:タプル)
パラメータで指定された文字列を、MDX文のそれぞれの要素に変換します。MDXではデータの抽出条件となる指定がSELECT
句やWHERE
句のメンバー指定などで直接記述されてしまうため、MDX文をプロシージャ化して抽出条件をプロシージャのパラメータとして指定する、ということができません。そのために用意されているのがこれらの関数です。
関数にパラメータに文字列(’
で括る)を指定し、その結果をメンバーなどMDXの各要素に変換します。ADOMD.Netを使用したクライアントアプリケーションの開発や、当社製品「CubeWalker」を使用したアプリケーション構築などでよく使用します。
SELECT { [Measures].[URIKINGAKU] } ON COLUMNS, { StrToMember(‘[URIAGE DATE].[YYYY-MM-DD].[‘
+ @NEN +’]’).Children } ON ROWS FROM [Sales]
このように、文字列は「+
」で結合するなどの編集が可能です。
また、文字列編集時にはVBA関数も使用できます。これらの組み合わせで文字列編集することにより、MDX文をあらかじめ静的に作成し、パラメータ指定にて動作されることが可能になります。
まとめ
今回は前回に引き続き、よく使うMDX関数について解説しました。次回はMDXを使用したクライアントアプリケーションの作り方について解説します。
参考資料
- 『SQL Server Books Online - Microsoft』
- 『MDX Solutions』George Spofford・Sivakumar Harinath・Christopher Webb・Dylan Hai Huang・Francesco Civardi著、Wiley社、2006年3月