重複したメンバー名と別名を指定するためのMDX構文
MDXは、Essbaseメンバー名を正確に識別する必要があるときに使用します。たとえば、重複するメンバー名が有効であるデータベースでは、MDXを使用すると修飾メンバー名を参照でき、一意の識別が可能になります。
次のメンバー仕様ルールは、重複メンバー名が有効になっているキューブに適用されます。
ノート:
これらのルールは、MDXを使用して、一意のメンバー名のアウトライン(重複メンバー名が有効になっていないアウトライン)で共有メンバー名を明示的に参照する必要がある場合にも適用されます。このトピックの共有メンバー名の例を参照してください。
重複メンバー名を指定するには、修飾名を使用する必要があります。修飾されたメンバー名または別名は、次を使用して指定できます。
-
完全修飾メンバー名—重複メンバー名または別名、およびディメンション名までのすべての祖先で構成されます。各名前は大カッコ([])で囲み、ピリオドで区切る必要があります。
[DimensionMember].[Ancestors...].[DuplicateMember]
例:
[Product].[100].[100-10]
-
ショートカット修飾メンバー名—Essbaseは、重複メンバー・アウトラインのメンバーのショートカット修飾名を内部的に作成します。
スクリプト、Smart Viewまたはその他のグリッド・クライアント、またはMDX問合せにショートカット修飾名を手動で挿入できます。
Essbaseは、次の構文を使用してショートカット修飾名を作成します。スクリプト、グリッド・クライアント、およびMDX問合せでメンバーを参照するときは、Essbaseが使用するのと同じ構文を使用するのが最適ですが、必須ではありません。
表4-3 ショートカット修飾メンバー名の構成
シナリオ 修飾名の構文 例 世代2に重複メンバー名が存在する [DimensionMember].[DuplicateMember]
[Year].[Jan]または[Product].[Jan]
アウトラインに重複メンバー名が存在するが、ディメンション内では一意である [DimensionMember]@[DuplicateMember]
[Year]@[Jan]
重複メンバー名は一意の親を持つ [ParentMember].[DuplicateMember]
[East].[New York]
世代3に重複メンバー名が存在する [DimensionMember].[ParentMember].[DuplicateMember]
[Products].[Personal Electronics].[Televisions]
重複メンバー名が名前付き世代またはレベルに存在し、メンバーはその世代またはレベルでは一意である [DimensionMember]@[GenLevelName]|[DuplicateMember]
[2006]@[Gen1]|[Jan]
MDXでは、ショートカット修飾メンバー名を参照するには、次のいずれかの構文メソッドを使用する必要があります。
-
エスケープ文字の方法—MDX構文でも大カッコが使用されているため、次のようになります。
-
ショートカット修飾名内の名前部分で使用される内部閉じカッコ(])には、追加の]エスケープ文字が必要です。
-
ショートカット修飾メンバー名全体は、大カッコ([])のセットで囲む必要があります。
例:
[Year].[Jan]
は、MDX内で[[Year]].[Jan]]]
として参照されます。[Year]@[Jan]
は、MDX内で[[Year]]@[Jan]]]
として参照されます。[2006]@[Gen1]|[Jan]
は、MDX内で[[2006]]@[Gen1]]|[Jan]]]
として参照されます。ノート:
前述の構文は、完全修飾メンバー名でも機能しますが、必須ではありません。
-
-
StrToMbr関数の方法—StrToMbr関数を使用して、修飾名の文字列をメンバー値の式に変換できます。
例:
[Year].[Jan]
は、MDX内でStrToMbr("[Year].[Jan]")
として参照されます。[Year]@[Jan]
は、MDX内でStrToMbr("[Year]@[Jan]")
として参照されます。[2006]@[Gen1]|[Jan]
は、MDX内でStrToMbr("[2006]@[Gen1]|[Jan]")
として参照されます。ノート:
前述の構文は、完全修飾メンバー名でも機能しますが、必須ではありません。
-
重複メンバー名の問合せ例
次の問合せは、MDXでショートカット・メンバー名を参照する両方の方法を使用しています。
SELECT
{ Sales, Profit }
ON COLUMNS,
{[[Store]]@[6]]], StrToMbr("Product.SKU.1")}
ON ROWS
FROM MySample.Basic
WHERE ([[1998]].[Q1]].[1]]])
ノート:
StrToMbrは、名前、別名、修飾名など、あらゆるタイプのメンバー識別子文字列を受け入れます。
共有メンバー名の例
次の例は、共有メンバーを含む一意のメンバー名のアウトラインに適用されます。
Sample Basicデータベースでは、メンバー[100-20]は親[100]の下で参照されるメンバーであり、親[Diet]の下でそれに関連付けられた共有メンバーを持っています。次の問合せに示すように、共有メンバー[100-20]は、一意の名前[Diet].[100-20]を使用して明示的に参照できます。
SELECT
{Sales}
ON COLUMNS,
{[[Diet]].[100-20]]]} PROPERTIES MEMBER_UNIQUE_NAME
ON ROWS
FROM Sample.Basic;