聚合设计与特定度量值组的分区相关联,以确保分区在存储聚合时使用相同的结构。 通过对分区使用相同的存储结构,可以轻松定义以后可以使用 MergePartitions 命令合并的分区。 有关聚合设计的详细信息,请参阅 聚合和聚合设计。
若要为聚合设计定义聚合,可以在 XML for Analysis(XMLA)中使用 DesignAggregations 命令。 该 DesignAggregations
命令具有属性,用于标识要用作引用的聚合设计,以及如何基于该引用控制设计过程。
DesignAggregations
使用命令及其属性,可以迭代或批量设计聚合,然后查看生成的设计统计信息来评估设计过程。
指定聚合设计
命令的 DesignAggregations
Object 属性必须包含对现有聚合设计的对象引用。 对象引用包含数据库标识符、多维数据集标识符、度量值组标识符和聚合设计标识符。 如果聚合设计尚不存在,则会发生错误。
控制设计过程
可以使用命令的 DesignAggregations
以下属性来控制用于定义聚合设计的聚合的算法:
Steps 属性确定命令在将控制权返回到客户端应用程序之前应执行的迭代
DesignAggregations
数。Time 属性确定命令在将控制权返回到客户端应用程序之前应采用的毫秒
DesignAggregations
数。Optimization 属性确定命令应尝试实现的性能改进
DesignAggregations
的估计百分比。 如果要以迭代方式设计聚合,则只需在第一个命令上发送此属性。Storage 属性确定命令使用的
DesignAggregations
磁盘存储估计量(以字节为单位)。 如果要以迭代方式设计聚合,则只需在第一个命令上发送此属性。Materialize 属性确定命令是否
DesignAggregations
应在设计过程中创建定义的聚合。 如果要迭代设计聚合,则应将此属性设置为 false,直到准备好保存设计的聚合。 如果设置为 true,则当前设计过程将结束,定义的聚合将添加到指定的聚合设计中。
指定查询
DesignAggregations 命令支持基于使用情况的优化命令,方法是在 Queries 属性中包含一个或多个Query
元素。 该 Queries
属性可以包含一个或多个 Query 元素。
Queries
如果该属性不包含任何Query
元素,则Object
元素中指定的聚合设计使用包含一组常规聚合的默认结构。 此常规聚合集旨在满足命令的 Optimization
指定条件和 Storage
属性 DesignAggregations
。
每个 Query
元素表示设计过程用于定义面向最常使用的查询的聚合的目标查询。 可以指定自己的目标查询,也可以使用查询日志中Microsoft SQL Server Analysis Services 实例存储的信息来检索有关最常用的查询的信息。 Usage-Based 优化向导使用查询日志在发送 DesignAggregations
命令时根据时间、使用情况或指定用户检索目标查询。 有关详细信息,请参阅 Usage-Based 优化向导 F1 帮助。
如果要迭代设计聚合,则只需在第一 DesignAggregations
个命令中传递目标查询,因为 Analysis Services 实例存储这些目标查询并在后续 DesignAggregations
命令期间使用这些查询。 在迭代过程的第一DesignAggregations
个命令中传递目标查询后,包含属性中Queries
目标查询的任何后续DesignAggregations
命令都生成错误。
该 Query
元素包含逗号分隔的值,其中包含下列参数:
Frequency,Dataset[,Dataset...]
频率
与以前执行查询的次数相对应的加权因子。
Query
如果元素表示新查询,则 Frequency 值表示设计过程用于评估查询的权重因子。 随着频率值变大,在设计过程中对查询施加的权重会增加。
数据集
一个数值字符串,指定要包含在查询中的维度中的属性。 此字符串的字符数必须与维度中的属性数相同。 零(0)指示指定序号位置中的属性不包括在指定维度的查询中,而一(1)表示指定序号位置中的属性包含在指定维度的查询中。
例如,字符串“011”将引用一个包含三个属性的维度的查询,其中第二个和第三个属性包含在查询中。
注释
某些属性在数据集中被排除在考虑之外。 有关排除的属性的详细信息,请参阅 Query 元素(XMLA)。
包含聚合设计的度量值组中的每个维度都由元素中的Query
数据集值表示。
数据集值的顺序必须与度量值组中包含的维度的顺序匹配。
使用迭代或批处理过程设计聚合
可以使用 DesignAggregations
命令作为迭代过程或批处理的一部分,具体取决于设计过程所需的交互性。
使用迭代过程设计聚合
若要以迭代方式设计聚合,请发送多个 DesignAggregations
命令,以便对设计过程进行精细控制。 聚合设计向导使用相同的方法对设计过程进行精细控制。 有关详细信息,请参阅 聚合设计向导 F1 帮助。
注释
以迭代方式设计聚合需要显式会话。 有关显式会话的详细信息,请参阅管理连接和会话(XMLA)。
若要启动迭代过程,首先发送 DesignAggregations
包含以下信息的命令:
整个
Storage
设计过程所针对的属性值和Optimization
属性值。Steps
设计过程的第一步限制的属性值和Time
属性值。如果需要基于使用情况的优化,
Queries
则包含目标查询的属性,其中包含整个设计过程的目标查询。属性
Materialize
设置为 false。 将此属性设置为 false 表示在命令完成后,设计过程不会将定义的聚合保存到聚合设计中。
第一 DesignAggregations
个命令完成后,该命令将返回包含设计统计信息的行集。 可以评估这些设计统计信息,以确定设计过程应继续,还是设计过程是否完成。 如果该过程应继续,则发送另一 DesignAggregations
个命令,其中包含 Steps
设计过程的此步骤受到限制的命令和 Time
值。 评估生成的统计信息,然后确定设计过程是否应继续。 发送命令和评估结果的 DesignAggregations
迭代过程会持续到达到目标并定义一组适当的聚合。
到达所需的聚合集后,将发送一个最终 DesignAggregations
命令。
DesignAggregations
最后一个命令应将其Steps
属性设置为 1,并且其Materialize
属性设置为 true。 通过使用这些设置,此最终 DesignAggregations
命令将完成设计过程,并将定义的聚合保存到聚合设计中。
使用批处理过程设计聚合
还可以通过发送包含整个设计过程的目标和限制的单个DesignAggregations
命令Storage
Steps
Time
来设计批处理中的聚合。Optimization
如果需要基于使用情况的优化,则设计过程的目标查询也应包含在属性中 Queries
。 此外,请确保属性 Materialize
设置为 true,以便设计过程在命令完成时将定义的聚合保存到聚合设计中。
可以在隐式会话或显式会话中使用批处理设计聚合。 有关隐式会话和显式会话的详细信息,请参阅管理连接和会话(XMLA)。
返回设计统计信息
当 DesignAggregations
命令将控件返回到客户端应用程序时,该命令将返回一个行集,其中包含表示命令的设计统计信息的单个行。 行集包含下表中列出的列。
列 | 数据类型 | DESCRIPTION |
---|---|---|
步骤 | 整数 | 命令在将控制权返回到客户端应用程序之前执行的步骤数。 |
时间 | 长整数 | 命令在将控件返回到客户端应用程序之前所花费的毫秒数。 |
优化 | 加倍 | 在将控制权返回到客户端应用程序之前,命令实现的性能改进的估计百分比。 |
储存 | 长整数 | 命令在将控制权返回到客户端应用程序之前所占用的估计字节数。 |
聚合 | 长整数 | 在将控件返回到客户端应用程序之前,命令定义的聚合数。 |
LastStep | 布尔型 | 指示行集中的数据是否表示设计过程中的最后一步。
Materialize 如果该命令的属性设置为 true,则此列的值设置为 true。 |
可以使用迭代和批处理设计中每个 DesignAggregations
命令后返回的行集中包含的设计统计信息。 在迭代设计中,可以使用设计统计信息来确定和显示进度。 批量设计聚合时,可以使用设计统计信息来确定命令创建的聚合数。