设计聚合 (XMLA)

聚合设计与特定度量值组的分区相关联,以确保分区在存储聚合时使用相同的结构。 通过对分区使用相同的存储结构,可以轻松定义以后可以使用 MergePartitions 命令合并的分区。 有关聚合设计的详细信息,请参阅 聚合和聚合设计

若要定义聚合设计的聚合,可以在 XML for Analysis (XMLA) 中使用 DesignAggregations 命令。 DesignAggregations 命令具有属性,用于标识要用作引用的聚合设计,以及如何基于该引用控制设计过程。 使用 DesignAggregations 命令及其属性,可以迭代或批量设计聚合,然后查看生成的设计统计信息来评估设计过程。

指定聚合设计

DesignAggregations 命令的 Object 属性必须包含对现有聚合设计的对象引用。 该对象引用包含数据库标识符、多维数据集标识符、度量值组标识符和聚合设计标识符。 如果该聚合设计不存在,则会出现错误。

控制设计过程

可以使用 DesignAggregations 命令的以下属性来控制用于定义聚合设计的聚合的算法:

  • Steps 属性确定 DesignAggregations 命令在将控制权返回到客户端应用程序之前应采用多少次迭代。

  • Time 属性确定 DesignAggregations 命令在将控件返回到客户端应用程序之前应采用多少毫秒。

  • Optimization 属性确定 DesignAggregations 命令应尝试实现的性能改进的估计百分比。 如果要以迭代方式设计聚合,只需在第一条命令中发送此属性。

  • Storage 属性确定 DesignAggregations 命令使用的磁盘存储估计量(以字节为单位)。 如果要以迭代方式设计聚合,只需在第一条命令中发送此属性。

  • Materialize 属性确定 DesignAggregations 命令是否应创建设计过程中定义的聚合。 如果要以迭代方式设计聚合,则应在准备好保存所设计的聚合之前,将此属性设置为 false。 如果设置为 true,则当前设计过程将会终止,并会将所定义的聚合添加到指定的聚合设计中。

指定查询

DesignAggregations 命令支持基于使用情况的优化命令,方法是在 Query 属性中包含一个或多个 Query 元素。 Query 属性可以包含一个或多个 Query 元素。 如果 Query 属性不包含任何 查询 元素, 则 Object 元素中指定的聚合设计使用包含一组常规聚合的默认结构。 此常规聚合集旨在满足 DesignAggregations 命令的优化存储属性中指定的条件。

每个 Query 元素表示一个目标查询,设计进程使用这些查询定义以最常用的查询为目标的聚合。 可以指定自己的目标查询,也可以使用查询日志中 Microsoft SQL Server SQL Server Analysis Services实例存储的信息来检索有关最常用的查询的信息。 Usage-Based优化向导使用查询日志在发送 DesignAggregations 命令时基于时间、使用情况或指定用户检索目标查询。 有关详细信息,请参阅 基于使用情况的优化向导 F1 帮助

如果要迭代设计聚合,则只需在第一个 DesignAggregations 命令中传递目标查询,因为SQL Server Analysis Services实例存储这些目标查询,并在后续 DesignAggregations 命令期间使用这些查询。 在迭代进程的第一个 DesignAggregations 命令中传递目标查询后,任何在 DesignAggregations 属性中包含目标查询的后续 Queries 命令都会生成错误。

Query 元素包含一个以逗号分隔的值,该值包含以下参数:

Frequency,Dataset[,Dataset...]

频率
与该查询此前执行的次数对应的加权系数。 如果 Query 元素表示一个新查询,则 Frequency 值表示设计进程用于评估该查询的加权系数。 在设计进程中,随着频率值变大,该查询的权重也会增加。

数据集
一个数字字符串,该字符串指定维度中的哪些属性要包括在该查询中。 此字符串的字符个数必须与维度中的属性个数相同。 零 (0) 指示指定序号位置的属性不包括在指定维度的查询中,而 1 指示指定序号位置的属性包括在指定维度的查询中。

例如,字符串“011”所指的查询涉及具有三个属性的维度,其中第二个和第三个属性包括在该查询中。

注意

某些属性与数据集无关。 有关排除的属性的详细信息,请参阅 Query 元素 (XMLA)

包含聚合设计的度量值组中的每个维度都由 Query 元素中的 Dataset 值表示。 Dataset 值的顺序必须与包括在度量值组中的维度的顺序一致。

使用迭代过程或批处理过程设计聚合

可以使用 DesignAggregations 命令作为迭代过程或批处理的一部分,具体取决于设计过程所需的交互性。

使用迭代过程设计聚合

若要迭代设计聚合,请发送多个 DesignAggregations 命令,以便对设计过程进行精细控制。 聚合设计向导使用同样的方法精确控制设计过程。 有关详细信息,请参阅 聚合设计向导 F1 帮助

注意

以迭代方式设计聚合需要显式会话。 有关显式会话的详细信息,请参阅 管理连接和会话 (XMLA)

若要启动迭代过程,首先发送一个 DesignAggregations 命令,其中包含以下信息:

  • 针对整个设计过程的存储和优化属性值。

  • 设计过程的第一步所依据 的步骤时间 属性值受到限制。

  • 如果需要基于使用情况的优化,则包含针对整个设计过程的目标查询的 Queries 属性。

  • Materialize 属性设置为 false。 将此属性设置为 false 指示当命令完成时,设计过程不会将所定义的聚合保存到聚合设计中。

第一个 DesignAggregations 命令完成后,该命令将返回包含设计统计信息的行集。 您可以对这些设计统计信息进行评估,以确定设计过程是应继续还是已完成。 如果进程应继续,则发送另一个 DesignAggregations 命令,其中包含设计过程的此步骤受限的步骤和时间值。 您要对结果统计信息进行评估,然后确定设计过程是否应继续。 发送 DesignAggregations 命令并评估结果的迭代过程会持续到达到目标并定义一组适当的聚合。

到达所需的聚合集后,将发送一个最终 的 DesignAggregations 命令。 最后一个 DesignAggregations 命令应将其 Steps 属性设置为 1,其 Materialize 属性设置为 true。 通过使用这些设置,此最终 的 DesignAggregations 命令将完成设计过程,并将定义的聚合保存到聚合设计中。

使用批处理过程设计聚合

还可以通过发送包含步骤时间存储和优化属性值的单个 DesignAggregations 命令来设计批处理中的聚合,该命令针对整个设计过程并受到限制。 如果需要基于使用情况的优化,则设计过程的目标查询也应包含在 “查询 ”属性中。 此外,请确保 将 Materialize 属性设置为 true,以便设计过程在命令完成后将定义的聚合保存到聚合设计中。

您可以在隐式或显式会话中使用批处理过程来设计聚合。 有关隐式和显式会话的详细信息,请参阅 管理连接和会话 (XMLA)

返回设计统计信息

DesignAggregations 命令将控件返回到客户端应用程序时,该命令将返回一个行集,该行集包含表示命令的设计统计信息的单个行。 下表列出了该行集包含的列。

数据类型 说明
步骤 整数 在将控制权返还给客户端应用程序之前,命令执行的步数。
时间 Long integer 在将控制权返还给客户端应用程序之前,命令运行的毫秒数。
优化 Double 在将控制权返还给客户端应用程序之前,命令获得的性能提高百分比估计值。
存储 Long integer 在将控制权返还给客户端应用程序之前,命令占用的存储空间的估计字节数。
聚合 Long integer 在将控制权返还给客户端应用程序之前,命令定义的聚合数。
LastStep 布尔 指示行集中的数据是否表示设计过程的最后一步。 如果命令 的 Materialize 属性设置为 true,则此列的值设置为 true。

可以使用迭代和批处理设计中的每个 DesignAggregations 命令后返回的行集中包含的设计统计信息。 在迭代设计过程中,您可以使用设计统计信息来确定并显示进度。 以批处理方式设计聚合时,您可以使用设计统计信息来确定命令所创建的聚合数。

另请参阅

在 Analysis Services 中使用 XMLA 开发