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