MEMBERGET

此函数通过引用元素与合并元素的关系,返回元素的唯一名称。此函数仅适用于符合 ODBO 的数据库。若要返回标题,使用代字号 (~) 数字格式。

语法

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

注意

函数的第三个参数是“层次结构”,而非“维度”。如果使用关系或 Analysis Services 数据库,这些数据库在一个维度中可有多个层次结构,则这个函数便非常实用。必须指定层次结构的唯一名称。

MEMBERGET 处理无效或不匹配层次结构和元素参数的方式已经有了一个临时的改变。

如果同一元素名称存在于多个维度中,将会出现“维度不匹配”错误。若要避免这种错误,指定元素的唯一名称。
注意

如果指定空字符串作为元素名称,则假定指定层次结构的默认元素。

示例

对于 Analysis Services,此示例使用 Adventure Works 数据库。Geography 维度有多个层次结构。该示例使用 City 层次结构。其唯一名称是 [Geography].[City]

=MEMBERGET("Adventure Works","Adventure Works","[Geography].[City]",
"[Geography].[City].&[Abingdon]&[ENG]","Sibling",2)
此示例返回 Alexandria [NSW] 元素。这是 Abingdon [ENG] 的第二个同级(从零开始计数)。用 1 替换 2,返回 Albany [OR],即 Abingdon [ENG] 的第一个同级。
Param1 的可能值为:
子级
返回父级的(基于零的)子级,用 Param2 指定。Param2 必须为数字。
下一步
返回层次结构中与指定元素位于相同级别的下一个元素。不需要 Param2。
注意

Memberget ("...,"Next") 等同于 Memberget ("...,"Sibling",1)

上一个
返回层次结构中指定元素之前且位于同一级别的元素。不需要 Param2。
同级
返回父级的同级,用 param2 指定。Param2 必须为正数或负数或零。
注意
Memberget ("...,"sibling",-1) is equivalent to Memberget ("...,"Prev")
父级
返回指定元素的父级。不需要 Param2。
=MEMBERGET("Adventure Works","Adventure Works","[Geography].[City]",
"[Geography].[City].&[Abingdon]&[ENG]","Parent")
“自身”和“验证”
“自身”和“验证”都可返回指定元素的唯一名称。不需要 Param2。如果元素不存在,则公式将返回指定层次结构的默认元素。
“验证”检查指定层次结构是否存在。如果不存在,公式将返回 “#NA!”
“自身”不会检查指定层次结构是否存在。即,如果元素存在,则公式将返回其唯一名称。
注意

Memberget ("...,"Self")Memberget ("...,"Verify") 都等同于 ("...,"Sibling",0)

示例

层次结构的默认元素不一定是顶级元素。若要查找哪个是默认元素,可以使用自身参数,并将空字符串作为元素名称:

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

多选

MEMBERGET 支持多选。即,可使用 MEMBERGET 返回存储在 MLS-XML 中的多个元素的唯一名称。

例如,名为 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 中提取元素的唯一名称。

或者,若要在单元格中显示元素的标题,可将代字号 (~) 字符指定为单元格的数字格式。