我正在尝试了解分析服务如何确定处理多维数据集时要计算的聚合。根据我的阅读,似乎用户定义的层次结构用于此目的,因为聚合是根据其结构预先计算的。与此相反,属性层次结构不会对此预先计算做出贡献。
此处已提出previous question,但我想知道网上是否还有其他资源可以更详细地解释这一点。
感谢。
答案 0 :(得分:1)
每篇SSAS开发人员都应该阅读这篇文章...... SQL Server 2008 White Paper: Analysis Services Performance Guide
Analysis Services使您可以构建两种类型的用户 层次结构:自然和非自然的层次结构,每个都有不同的 设计和性能特征。在自然层次结构中, 作为层次结构中的级别参与的所有属性都具有直接属性 或层次结构底部的间接属性关系 到层次结构的顶部。
在不自然的层次结构中,层次结构至少包含两个 没有属性关系的连续级别。通常 这些层次结构用于创建通常的向下钻取路径 查看不遵循任何自然层次结构的属性。对于 例如,用户可能希望查看性别和教育的层次结构。
从性能角度来看,自然层次结构表现得非常好 与非自然的等级制度不同。在自然层次结构中, 层次结构树在层次结构存储中在磁盘上实现。在 另外,参与自然层次结构的所有属性都是 自动%CONSIDERED%为聚合候选者。
不自然的层次结构未在磁盘上实现,参与非自然层次结构的属性不是 自动被视为聚合候选者。相反,他们 通常只为用户提供易于使用的向下钻取路径 查看没有自然关系的属性。通过 将这些属性组装到层次结构中,您也可以使用 各种MDX导航功能,可轻松执行计算 比如父母的百分比。
此外,被“视为”聚合候选者并不意味着该属性实际上将用于聚合。下载顶部链接中的论文...阅读并特别注意“聚合使用规则”和“影响聚合候选人”部分。
fwiw,在生产中,大多数开发人员启动聚合向导并最终切换到基于使用的优化。