SSAS Cube 维度成员关系Rigid 和 Flexible

时间:2022-10-19 16:05:33

维度成员关系指示成员关系是否随时间而更改。  值为 Rigid 和 Flexible,前者表示成员之间的关系不随时间而更改,后者表示成员之间的关系随时间而更改。 默认值为 Flexible。  指定适当的关系和关系属性,可提高查询和处理性能。

  • 如果您将关系定义为 Flexible(柔性),则将删除聚合并作为增量更新的一部分重新计算(如果只添加了新成员,则将不删除聚合)。
  • 如果您将关系定义为 Rigid(刚性),则 Analysis Services 会在增量更新维度时保留聚合。

如果定义为刚性的关系发生了实际更改,Analysis Services 会在增量处理(Update Process)过程中生成错误。错误信息如,Rigid relationships between attributes cannot be changed during incremental processing of a dimension。有三种解决方案:

  1. 我们必须修改数据源的数据使其跟Cube中的数据保持一致。
  2. 将关系定义为Flexible
  3. 使用全部更新(Full Process)维度

在适当的位置将属性关系定义为“刚性,此规则分析维度,以确定维度中是否至少包含一个用户定义的层次结构,层次结构中的每个成员属性唯一对应于它上面的成员属性。如果维度中不包含这样的层次结构,则该规则将检查维度中所有特性关系的 RelationshipType 属性是否都设置为 Flexible。

为了获得最佳性能,通常应根据各成员之间的关系是否会随时间变化来设置 RelationshipType 属性:

  • 对于不希望变化的关系,请将 RelationshipType 属性设置为 Rigid。给定月份中的日期就是一种不希望变化的关系。
  • 对于希望变化的关系,请将 RelationshipType 属性设置为 Flexible。可能随时间变化的关系的示例有给定区域内的销售人员或客户的婚姻状况。

设置 RelationshipType 属性将确定 Analysis Services 创建刚性聚合还是柔性聚合。增量更新后,Analysis Services 将删除柔性聚合,因此必须手动重新处理这些聚合,但 Analysis Services 会保留刚性聚合。