的维度设计器中,可以在“维度结构”视图的
在 Microsoft SQL Server Analysis Services 中,维度中的属性始终直接或间接与键属性相关。 当您基于星型架构(在该架构中,所有维度属性都派生自同一关系表)定义维度时,维度的键属性和每个非键属性之间会自动定义属性关系。 当您基于雪花架构(在该架构中,维度属性派生自多个相关的表)定义维度时,会自动按如下方式定义属性关系:
在键属性与绑定到主维度表中各列的每个非键属性之间定义。
在键属性与绑定到辅助表中链接基础维度表的外键的属性之间定义。
在绑定到辅助表中外键的属性与绑定到辅助表中各列的每个非键属性之间定义。
但是,由于多种原因您可能需要更改这些默认的属性关系。 例如,您可能需要定义自然层次结构、自定义排序顺序或基于非键属性的维度粒度。 有关详细信息,请参阅 维度属性引用。
注意
特性关系在多维表达式 (MDX) 中称作成员属性。
自然层次结构关系
当用户定义层次结构中包含的每个属性都与其下直接属性具有一对多关系时,层次结构就是自然层次结构。 例如,请参考基于具有八列的关系源表的“客户”维度:
CustomerKey
CustomerName
Age
性别
电子邮件
城市
国家/地区
区域
相应的 Analysis Services 维度具有七个属性:
客户(基于 CustomerKey,其中 CustomerName 提供成员名称)
年龄、性别、电子邮件、市县、地区、国家(地区)
通过在某级别的属性和此级别下面的级别的属性之间创建属性关系,强制执行表示自然层次结构的关系。 对于 Analysis Services,这指定自然关系和潜在聚合。 在“客户”维度中,“国家(地区)”、“区域”、“市县”和“客户”属性具有自然层次结构。 通过添加下列属性关系来说明 {Country, Region, City, Customer}
的自然层次结构:
与“区域”属性具有属性关系的“国家(地区)”属性。
与“市县”属性具有属性关系的“区域”属性。
与“客户”属性具有属性关系的“市县”属性。
若要在多维数据集中导航数据,还可以创建一个用户定义的层次结构,该层次结构不表示数据 (称为 即席 层次结构或 报告 层次结构) 。 例如,您可以基于 {Age, Gender}
创建用户定义层次结构。 用户看不到两个层次结构的行为方式有任何差异,尽管自然层次结构受益于聚合和索引结构(对用户隐藏)这两个层次结构在源数据中的自然关系。
级别的 SourceAttribute
属性确定用于说明该级别的特性。 特性的 KeyColumns
属性指定数据源视图中提供成员的列。 特性的 NameColumn
属性可以指定成员的其他名称列。
若要使用 SQL Server Data Tools (SSDT) 在用户定义的层次结构中定义级别,可以使用 Dimension Designer从多维数据集数据源视图中包含的相关表中选择维度属性、维度表中的列或列。 有关创建用户定义的层次结构的详细信息,请参阅 创建User-Defined层次结构。
在 Analysis Services 中,通常对成员的内容进行假定。 叶成员没有后代,并且包含派生自基础数据源的数据。 非叶成员则具有后代,并且包含派生自对子成员执行的聚合的数据。 在聚合级别中,各成员基于其从属级别的聚合。 因此,当级别源特性的 IsAggregatable
属性设置为 False
时,不应添加可聚合的特性作为该级别上面的级别。
定义属性关系
创建属性关系时的主要约束是确保,对于属性关系引用的属性,属性关系所属的属性中的任何成员的值不超过一个。 例如,如果您在“市县”属性与“省市自治区”属性之间定义了关系,则每个市县只能与单个省市自治区相关。
属性关系查询
可以通过 MDX PROPERTIES
语句的 SELECT
关键字以成员属性的形式使用 MDX 查询从特性关系检索数据。 有关如何使用 MDX 检索成员属性的详细信息,请参阅 使用成员属性 (MDX) 。