聚合和聚合设计

对象 AggregationDesign 定义一组可跨多个分区共享的聚合定义。

对象 Aggregation 表示度量值组数据在维度的某些粒度的汇总。

简单 Aggregation 对象由基本信息和维度组成。 基本信息包括聚合的名称、ID、批注和说明。 维度是包含维度粒度属性列表的对象集合 AggregationDimension

聚合是来自叶单元格的数据的预计算摘要。 聚合通过在提出问题之前准备答案来提高查询响应时间。 例如,当数据仓库事实数据表包含数十万行时,请求特定产品系列的每周销售额总计的查询可能需要很长时间才能回答,如果事实数据表中的所有行必须在查询时扫描和求和以计算答案。 但是,如果已预先计算要回答此查询的汇总数据,则响应几乎可以立即完成。 此汇总数据的预计算在处理过程中发生,是 OLAP 技术的快速响应时间的基础。

多维数据集是 OLAP 技术将摘要数据组织为多维结构的方式。 维度及其属性层次结构反映可以询问多维数据集的查询。 聚合存储在维度指定的坐标单元格中的多维结构中。 例如,问题“1998 年西北地区产品 X 的销售额是多少?” 涉及三个维度(产品、时间和地理)和一个度量值(销售额)。 多维数据集中指定坐标(产品 X,1998,西北)中的单元格的值是一个数值答案。

其他问题可能会返回多个值。 例如,“1998 年按地区按季度销售硬件产品的数量是多少?此类查询从满足指定条件的坐标中返回一组单元格。 查询返回的单元格数取决于产品维度的硬件级别、1998 年的四个季度和 Geography 维度中的区域数。 如果所有摘要数据都预先计算到聚合中,查询的响应时间将仅取决于提取指定单元格所需的时间。 无需计算或读取事实数据表中的数据。

尽管多维数据集中所有可能的聚合的预计算可能为所有查询提供最快的响应时间,但 Analysis Services 可以轻松计算其他预计算聚合的聚合值。 此外,计算所有可能的聚合都需要大量的处理时间和存储。 因此,存储要求与预先计算的可能聚合百分比之间存在权衡。 如果未预先计算聚合(0%),则会最小化多维数据集所需的处理时间和存储空间,但查询响应时间可能很慢,因为必须从叶单元格中检索每个查询所需的数据,然后在查询时聚合以回答每个查询。 例如,返回回答前面提问的单个数字(“1998 年西北地区产品 X 的销售额是多少”)可能需要读取数千行数据,提取用于从每行提供 Sales 度量值的列的值,然后计算总和。 此外,检索该数据所需的时间长度将非常取决于为 data-MOLAP、HOLAP 或 ROLAP 选择的存储模式。

设计聚合

Microsoft SQL Server Analysis Services 包含一种复杂的算法,用于选择预计算的聚合,以便可以从预计算值快速计算其他聚合。 例如,如果聚合是针对时间层次结构的 Month 级别预先计算的,则季度级别的计算只需要汇总三个数字,这可以按需快速计算。 此方法可节省处理时间并减少存储要求,对查询响应时间的影响最小。

聚合设计向导提供了用于指定算法的存储和百分比约束的选项,以便在查询响应时间和存储要求之间进行令人满意的权衡。 但是,聚合设计向导的算法假定所有可能的查询同样可能。 通过 Usage-Based 优化向导,可以通过分析客户端应用程序提交的查询来调整度量值组的聚合设计。 通过使用向导来优化多维数据集的聚合,可以增加对频繁查询的响应能力,减少对不频繁查询的响应能力,而不会显著影响多维数据集所需的存储。

聚合是使用向导设计的,但在处理聚合的分区之前,不会实际计算这些聚合。 创建聚合后,如果多维数据集的结构发生更改,或者数据在多维数据集的源表中添加或更改,则通常需要查看多维数据集的聚合并再次处理多维数据集。

另请参阅

分区存储模式和处理