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