属性层次结构的默认成员用于在查询中不包含属性层次结构时计算表达式。 当查询包含一个属性层次结构或一个包括源属性的用户层次结构时,默认成员将被忽略。 这是因为使用了查询中指定的成员。
通过将属性成员指定为 DefaultMember
属性层次结构的属性值来设置属性层次结构的默认成员。 可以在维度设计器的“维度结构”选项卡上设置此属性,也可以在 SQL Server Data Tools(SSDT)的多维数据集设计器中的“计算”选项卡上的多维数据集计算脚本中设置此属性。 定义维度安全性时,还可以在“维度数据”选项卡上指定 DefaultMember
安全角色的属性(覆盖维度上设置的默认成员)。 为了避免名称解析问题,请在以下情况下在多维数据集的 MDX 脚本中定义默认成员:如果多维数据集多次引用数据库维度,如果多维数据集中的维度的名称与数据库中的维度不同,或者想要在不同的多维数据集中具有不同的默认成员。
属性的默认成员用于在查询中不包含属性时计算表达式。 属性的默认成员由 DefaultMember
属性上的属性指定。 每当维度中的层次结构包含在查询中时,都会忽略与层次结构中级别对应的属性中的所有默认成员。 如果查询中不包含维度的层次结构,则默认成员将用于维度中的所有属性。
未指定默认成员时解析默认成员
如果未为属性层次结构指定默认成员,并且属性层次结构可聚合(IsAggregatable
属性上的属性设置为 True
),则(全部)成员为默认成员。 如果未指定默认成员,并且属性层次结构不可聚合( IsAggregatable
属性的属性设置为 False
),则从属性层次结构的顶层选择默认成员。
指定默认成员
Microsoft SQL Server Analysis Services 的每个维度中的属性都有一个默认成员,您可以通过使用属性的DefaultMember
属性来指定该成员。 如果未在查询中包含属性,则此设置用于计算表达式。 如果查询在维度中指定层次结构,则忽略层次结构中属性的默认成员。 如果查询未在维度中指定层次结构,则 DefaultMember
维度属性的设置将生效。
如果DefaultMember
的属性设置为空,并且其IsAggregatable
属性设置为True
,则默认成员为全部成员。
IsAggregatable
如果该属性设置为False
,则默认成员是第一个可见级别的第一个成员。
属性 DefaultMember
的设置适用于属性参与的每个层次结构。 不能对维度中的不同层次结构使用不同的设置。 例如,如果 [1998] 成员是 [Year] 属性的默认成员,则此设置适用于维度中的每个层次结构。
DefaultMember
本例中的设置不能是一个层次结构中的 [1998],另一个层次结构中的 [1997]。
如果在不自然聚合的层次结构中为特定级别定义默认成员,则必须在层次结构中高于该级别的所有级别定义默认成员。 例如,在层次结构“所有国家/地区-气候”中,除非为“国家/地区”定义默认成员,否则不能为“气候”定义默认成员。 未能这样做会导致执行查询时出现错误。
当层次结构中的级别自然聚合时,你可以为层次结构中的任何属性定义默认成员,而不考虑层次结构中的其他属性。 例如,在层次结构“国家或地区-省-市”中,可以为城市定义默认成员,例如 [City].[蒙特利尔],而不为省或国家/地区定义默认成员。