ここまで、このページではラベルとセル値を取得する手順のみを紹介してきました。場合によっては、指定したセルのコンテンツに関するより具体的な情報が必要になることがあります。
まず、いくつかのサンプル・クエリを参考として挙げて、概念を検証することが有用です。例えば、Business Intelligence シェルに表示された次のクエリ結果について考えてみてください。
一般に MDX 結果セット内では、各行は 1 つのタプルに対応しており、各列も 1 つのタプルに対応しています。これらの各タプルは、最初の例のように単一のシンプルなメンバである場合も、2 つ目の例のように複数メンバの組み合わせである場合もあります。タプルには、メジャーが含まれる場合と含まれない場合があります。
任意の指定したセルについて、そのセルが属する列や行のタプルに関する情報が必要になることがあります。これらのタプルに関する情報を取得するには、以下の手順を実行します。
ClassMethod ShowCellDetails(rset As %DeepSee.ResultSet, col As %Integer = 1, row As %Integer = 1)
{
//print query results
write !, "Result set for comparison",!
do rset.%Print()
//call %GetAxisMembers to build process-private global with info
//for given result set and axis; return key of node that has this info
Set status=rset.%GetAxisMembers(1,.columnkey)
If $$$ISERR(status) {Do $System.Status.DisplayError(status) Quit}
Set status=rset.%GetAxisMembers(2,.rowkey)
If $$$ISERR(status) {Do $System.Status.DisplayError(status) Quit}
write !, "We are looking at the cell ("_col_","_row_")"
write !, "The value in this cell is ", rset.%GetOrdinalValue(col,row)
write !, "For this cell, the column is a tuple that combines the following member(s):"
set i=0
while (i '= "") {
write !, " Member ",i
set infolist=^||DeepSee.AxisMembers(columnkey,1,col,i)
write:$LI(infolist,3)'="" !, " Dimension name: ",$LI(infolist,3)
write:$LI(infolist,4)'="" !, " Hierarchy name: ",$LI(infolist,4)
write:$LI(infolist,5)'="" !, " Level name: ",$LI(infolist,5)
write:$LI(infolist,6)'="" !, " Member key: ",$LI(infolist,6)
set i=$ORDER( ^||DeepSee.AxisMembers(columnkey,1,col,i) )
}
write !, "For this cell, the row is a tuple that combines the following member(s):"
set i=0
while (i '= "") {
write !, " Member ",i
set infolist=^||DeepSee.AxisMembers(rowkey,2,row,i)
write:$LI(infolist,3)'="" !, " Dimension name: ",$LI(infolist,3)
write:$LI(infolist,4)'="" !, " Hierarchy name: ",$LI(infolist,4)
write:$LI(infolist,5)'="" !, " Level name: ",$LI(infolist,5)
write:$LI(infolist,6)'="" !, " Member key: ",$LI(infolist,6)
set i=$ORDER( ^||DeepSee.AxisMembers(rowkey,2,row,i) )
}
Kill ^||DeepSee.AxisMembers(columnkey)
Kill ^||DeepSee.AxisMembers(rowkey)
}