重複したメンバー名と別名を指定するための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構文でも大カッコが使用されているため、次のようになります。

      1. ショートカット修飾名内の名前部分で使用される内部閉じカッコ(])には、追加の]エスケープ文字が必要です。

      2. ショートカット修飾メンバー名全体は、大カッコ([])のセットで囲む必要があります。

      例:

      [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;