MEMBERGET

この関数は、連結エレメントを持つ関係を参照することにより、エレメントの一意の名前を返します。この関数は ODBO 対応のデータベースでのみ動作します。キャプションを返すには、チルダ (~) 数値書式を使用します。

構文

MEMBERGET("data_connection","cube","hierarchy","element_name","param" {,"param"})

注: 

関数の 3 番目の引数は次元ではなく階層です。このことは、1 つの次元内に複数の階層を持つことができるリレーショナルデータベースや Analysis Services データベースを使用しているときに重要な意味を持ちます。階層の一意の名前を指定する必要があります。

階層とエレメントパラメーターが無効であるか一致しない場合の MEMBERGET のハンドリング方法は、一時的に変更されています。

同じエレメント名が複数の次元に存在する場合、「次元不一致」 エラーが発生することがあります。このエラーを回避するには、エレメントの一意の名前を指定します。
注: 

空の文字列をエレメント名として指定すると、指定した階層のデフォルトエレメントと解釈されます。

この例では、Adventure Works データベースを Analysis Services で使用します。Geography 次元には複数の階層があります。この例では City 階層を使用します。その一意の名前は [Geography].[City] です。

=MEMBERGET("Adventure Works","Adventure Works","[Geography].[City]",
"[Geography].[City].&[Abingdon]&[ENG]","Sibling",2)
この例は、Alexandria [NSW] エレメントを返します。これは Abingdon [ENG] の (ゼロから数えて) 2 番目の兄弟です。2 を 1 に置き換えると、Abingdon [ENG] の最初の兄弟である Albany [OR] が返されます。
Param1 に指定可能な値は、次のとおりです。
Child
Param2 で指定された親の (ゼロベースの) 子を返します。Param2 は数値でなければなりません。
次へ
階層内の指定されたエレメントと同じレベルにある次のエレメントを返します。Param2 は不要です。
注: 

Memberget ("...,"Next")Memberget ("...,"Sibling",1) と同じ結果になります。

Prev
階層内の指定されたエレメントと同じレベルにある前のエレメントを返します。Param2 は不要です。
Sibling
Param2 で指定された親の兄弟を返します。Param2 は正の数、負の数、またはゼロでなければなりません。
注: 
Memberget ("...,"sibling",-1) is equivalent to Memberget ("...,"Prev")
指定されたエレメントの親を返します。Param2 は不要です。
=MEMBERGET("Adventure Works","Adventure Works","[Geography].[City]",
"[Geography].[City].&[Abingdon]&[ENG]","Parent")
Self と Verify
Self と Verify はどちらも、指定したエレメントの一意の名前を返します。Param2 は不要です。エレメントが存在しない場合、この数式は指定した階層のデフォルトのエレメントを返します。
Verify は、指定した階層が存在するかチェックします。存在しない場合、この数式は 「#NA」 を返します。
Self は、指定した階層が存在するかどうかチェックしません。つまり、エレメントが存在する場合、この数式はその一意の名前を返します。
注: 

Memberget ("...,"Self")Memberget ("...,"Verify") はどちらも ("...,"Sibling",0) と等価です。

階層のデフォルトエレメントは、常にトップレベルエレメントとは限りません。セルフパラメーターと空の文字列をエレメント名として使用して、デフォルトのエレメントを検索できます。

=MEMBERGET("data_connection","cube","hierarchy","","self")

multiselect (複数選択)

MEMBERGET は multiselect (複数選択) に対応しています。つまり、MLS-XML に格納されている複数のエレメントの一意の名前を返す目的で MEMBERGET を使用できます。

たとえば、レポート変数 rv_multi に次の MLS-XML が含まれているものとします。
<?xml version="1.0" encoding="utf-16"?>
<MultiSelect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Hierarchy>[Period]</Hierarchy>
  <AggregationFunction>Sum</AggregationFunction>
  <StructureSelection>
    <Member>
      <MemberUName>[period].[all years].[2016]</MemberUName>
    </Member>
    <Member>
      <MemberUName>[period].[all years].[2017]</MemberUName>
    </Member>
  </StructureSelection>
</MultiSelect>
次の MEMBERGET 式を作成します。
=MEMBERGET( "BestPracticesOLAP", "Analysis", "[Period]", reportvariables.rv_multi.text, "child",2)

この MEMBERGET 式は、次の MLS-XML を返します。

<?xml version="1.0" encoding="utf-16"?>
<MultiSelect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Hierarchy>[Period]</Hierarchy>
  <AggregationFunction>Sum</AggregationFunction>
  <StructureSelection>
    <Member>
      <MemberUName>[Period].[All Years].[2016].[2016_Q3]</MemberUName>
    </Member>
    <Member>
      <MemberUName>[Period].[All Years].[2017].[2017_Q3]</MemberUName>
    </Member>
  </StructureSelection>
</MultiSelect>
注: 

この MEMBERGET 式がセルに含まれていると、</Multiselect> と表示されます。セルの高さを拡大すれば、MLS-XML 定義の全体を表示できます。

MULTISELECTGETMEMBERS または MULTISELECTGETMEMBERSSIMPLE でエレメントの一意の名前を MLS-XML から抽出することもできます。

また、セル内のエレメントのキャプションを表示するには、チルド (~) 文字をセルの数値書式として指定するという方法もあります。