Aggregation of Data in an ASO Cube(聚合 ASO 多维数据集中的数据)

要准备用于检索的 Essbase 聚合存储 (ASO) 多维数据集,请加载 0 级值,并通过聚合计算多维数据集。剩余值在检索数据时计算。不存储为检索计算的值。

虽然将数据值加载到 0 级单元格后 ASO 多维数据集不需要计算,但您可以将数据值作为聚合视图进行预计算,以优化数据的聚合。

Essbase 通过对存储层次和动态层次进行大纲合并和 MDX 公式计算 ASO 值。数据加载完成时,多维数据集可以进行计算。发出检索请求时, Essbase 会合并为级别 0 成员加载的值,并计算公式。

为了提高检索性能, Essbase 可以聚合值并提前存储这些值。但是,聚合和存储所有值可能是一个冗长的过程,需要存储磁盘空间。Essbase 提供了一个用于平衡时间和存储资源的智能聚合过程。

随着 Essbase 多维数据集的增长,检索必须处理更多数据值以满足查询的计算需求。为了加快检索速度, Essbase 允许您预先计算数据值并将这些值存储在聚合中。如果立方体大小接近一百万个聚合单元,则应强烈考虑执行聚合。根据使用环境,还可以通过预计算较小的多维数据集来获得性能优势。在 Essbase Web 界面中使用 MaxLBuild Aggregations 作业。

与聚合相关的 Essbase 术语

要了解如何计算 Essbase 聚合存储 (ASO) 多维数据集,请了解有关聚合的术语,包括:聚合单元格、输入单元格、聚合视图、合并、聚合和聚合脚本。

聚集单元格

跨维(不含公式)的 0 级交叉点的单元格称为输入单元格,这意味着可以向其加载数据值。涉及帐户维或动态层次成员的更高级别单元格始终在检索时计算。

跨维的所有其他较高级别交叉点都是聚合单元格。汇总单元格的值必须从较低级别值累计(合并)。

例如,在 ASOSamp.Basic 大纲中,“已付价格”>“本年度”>“上半年”>“便携式音频”>“CO”是一个汇总单元格;“原始价格”>“本年度”>“一月”>“摄像机”>“CO”是另一个汇总单元格。

图 37-4 聚合存储大纲样例


此图显示了 ASOSamp.Sample 数据库的轮廓。

聚合单元格值是针对每个请求计算的,它们也可预先计算并存储在磁盘上。

汇总视图

Essbase 定义要预先计算和存储的聚合单元格时,它会通过创建聚合视图来执行此操作。聚合视图是聚合单元格的集合。在各个维中,基于成员级别的集合。

例如,为大纲考虑一个聚合视图。此聚合视图包括以下维级别的聚合单元格:

  • 度量维,级别 0

  • 年维,级别 0

  • 时间维,层次 0 的级别 1

  • 层次 0 的第 2 层产品维

  • 地理位置维,级别 0

示例聚合视图显示为 0、0、1/0、2/0 和 0。

每个维按其顺序在大纲中显示,从左到右。如果维包含层次,则表示法将指定其层次中的成员级别。维中的层次从上至下编号,从层次 0 开始。

0、0、1/0、2/0 和 0 聚合视图包含包含以下成员交叉点的聚合单元格:

Original Price, Curr Year, Qtr1, Personal Electronics, CO 
Original Price, Curr Year, Qtr1, Personal Electronics, KS 
Original Price, Curr Year, Qtr1, Home Entertainment,   CO 
Original Price, Curr Year, Qtr1, Home Entertainment,   KS 
Original Price, Curr Year, Qtr2, Personal Electronics, CO 
Original Price, Curr Year, Qtr2, Personal Electronics, KS 
Original Price, Curr Year, Qtr2, Home Entertainment,   CO 
Original Price, Curr Year, Qtr2, Home Entertainment,   KS 
Original Price, Curr Year, Qtr3, Personal Electronics, CO 
Original Price, Curr Year, Qtr3, Personal Electronics, KS 
Original Price, Curr Year, Qtr3, Home Entertainment,   CO 
Original Price, Curr Year, Qtr3, Home Entertainment,   KS 
Original Price, Curr Year, Qtr4, Personal Electronics, CO 
Original Price, Curr Year, Qtr4, Personal Electronics, KS 
Original Price, Curr Year, Qtr4, Home Entertainment,   CO 
Original Price, Curr Year, Qtr4, Home Entertainment,   KS 
Original Price, Prev Year, Qtr1, Personal Electronics, CO 
Original Price, Prev Year, Qtr1, Personal Electronics, KS 
Original Price, Prev Year, Qtr1, Home Entertainment,   CO 
Original Price, Prev Year, Qtr1, Home Entertainment,   KS 
and so on...

聚集

聚合是基于大纲层次的 0 级数据值的合并。聚合包含一个或多个累计(合并)的聚合视图。Essbase 提供了一个智能聚合过程,用于选择要累计的聚合视图,聚合视图,然后将单元格的值存储在所选视图中。如果聚合中包括的聚合单元格依赖通过数据加载而更改的 0 级别值,则较高级别的值会在数据加载过程结束时自动更新。

术语 aggregation 用于聚合过程,以及由于执行该过程而存储的值集。

ASO 数据值的累计方式

聚合存储大纲的分层结构决定了值的汇总方式。第 0 层成员值累计到第 1 层成员值,第 1 层成员值累计到第 2 层成员值,依此类推。

分配给动态层次成员的合并运算符定义累计中使用的操作:加 (+)、减 (-)、乘 (*)、除 (/)、百分比 (%)、无操作 (~) 和 (^) 从不合并。

存储层次的成员只能具有加 (+) 或不合并 (~) 运算符。

对于更复杂的操作,您可以针对动态层次的成员提供 MDX 公式。MDX 公式的格式与 MDX 数字值表达式的格式相同。

汇总脚本

每个聚合脚本都是一个文件,用于定义要实体化的聚合视图的特定选择。请参阅适用于 Essbase ASO 多维数据集的聚合脚本

执行 ASO 汇总

聚合涉及视图选择和实体化。对于证明有用的聚合视图选择,您可以将其另存为聚合脚本,在下次需要时绕过视图选择。执行聚合时,将计算所选视图。

您可以选择将预计算的值存储为 Essbase 聚合存储多维数据集上的聚合。使用 MaxL 或作业执行聚合。

聚合过程分为两个阶段:

  • 聚合视图选择。

  • 计算和存储所选聚合视图的值。这个阶段也被称为聚合的实体化。

在聚合视图选择阶段, Essbase 分析如何计算和存储聚合视图的各种组合可能会影响平均查询响应时间。作为分析的输入,您可以定义物理存储和性能要求。您还可以跟踪数据使用情况并向分析流程提供信息,如基于使用情况选择视图中所述。

Essbase 根据其有用性和资源要求创建聚合视图的列表。列表中的每个视图都包含存储和性能信息,这些信息在存储该聚合视图以及上面列出的所有其他聚合视图时适用。您可以选择聚合列出的视图,选择和聚合列出的视图的子集,或者使用不同的输入标准重新运行选择处理。您还可以将基于新选择标准的新视图的实体化添加到聚合中。请参阅优化汇总视图选择

无论是否实体化选择,都可以将聚合视图的选择另存为聚合脚本。聚合脚本提供了灵活性,可以节省时间,因为它们使您能够在再次需要相同选择时绕过选择过程。请参阅适用于 Essbase ASO 多维数据集的聚合脚本

选择过程完成后,当您将所选聚合视图实体化为聚合时,将计算所选聚合视图。

建议使用以下流程来定义和实现聚合:

  1. 创建或更改大纲后,加载数据值。

  2. 执行默认聚合。

    可选:指定存储停止点。

  3. 实体化建议的聚合视图,并将默认选择保存在聚合脚本中。

  4. 运行为其设计聚合的查询类型。

  5. 如果查询时间或聚合时间过长,请考虑优化聚合。

  6. (可选)将聚合选择另存为聚合脚本。

要执行 ASO 多维数据集聚合选择或实体化,可以使用 Essbase Web 界面或以下 MaxL 语句:

您还可以根据需要将 Essbase 配置为自动生成聚合视图

针对聚合视图选择的优化

Essbase 为聚合存储 (ASO) 多维数据集提供的默认视图选择提供了出色的性能。但是,接受选择列表中的所有聚合视图并不能保证最佳性能。您可以针对多维数据集的环境和检索模式优化视图选择。

对于默认选择的聚合视图, Essbase 会分析存储的层次,并假定检索任何聚合单元的机会相同。Essbase 无法考虑外部因素,例如查询时的可用内存量。可用内存可能会受到诸如检索时的高速缓存内存定义或其他并发进程所需的内存等因素的影响。

如果要跟踪查询最多的哪些数据,并在聚合视图选择过程中包括结果和备选视图,请参阅基于使用情况选择视图

要提高 Essbase 21c 中聚合存储 (ASO) 多维数据集的性能,可以配置 Essbase 以根据元数据分析自动创建和维护默认聚合视图,并且可以控制聚合视图大小。有关详情,请参阅自动生成汇总视图

优化和测试聚合时,请考虑以下几点:

  • 提高检索性能可以增加磁盘存储成本和实现聚合所需的时间。

  • 跟踪查询可能会导致一组建议的聚合视图,为某些查询提供比其他查询更好的性能。选择建议的聚合视图可以显著提高某些查询的性能时间,而其他查询的性能改进很少,但从未如此糟糕,只要查询类型和频率接近跟踪期间执行的查询的类型和频率。

  • 优化聚合可能需要迭代的微调过程。

为了帮助 Essbase 估计聚合视图的大小,您可以调整 ASOSAMPLESIZEPERCENT 配置设置,该设置更改 Essbase 抽样的输入单元格数。抽样大小指定为输入级别数据的百分比。默认且最小样本大小为 100 万 (1,000,000) 个单元格。

Essbase 提供的信息可帮助您选择和存储 ASO 多维数据集的汇总视图的正确平衡。根据您对检索要求和环境的了解权衡此信息。使用以下信息可帮助您选择聚合的聚合视图:

  • 最大存储要求

    可以通过两种方式指定用于选择聚合视图的存储限制:

    • 启动聚合选择时,您可以指定最大存储停止值。在达到指定的存储限制或者没有更多视图可供选择之前,将选择聚合视图。

      使用带有 stopping when total_size exceeded 语法的 execute aggregate process MaxL 语句时,您可以指定生成的数据文件的最大磁盘空间,即当前多维数据集大小的比率。例如,如果一个多维数据集的大小为 1 GB,则将总的大小指定为 1.2 意味着所生成数据的大小不能超过 1 GB 的 20%,因为总的大小为 1.2 GB。

    • 对多维数据集进行每次分析后, Essbase 会显示有关 0 级输入单元格视图的信息,后跟建议的聚合视图列表。每个聚合视图显示的存储编号包括该聚合视图及其依赖的所有其他聚合视图。在选择要包括在聚合中的聚合视图时,可以考虑此存储编号。

  • 相对“查询成本”性能改进

    列表中的每个汇总视图显示的“查询成本”编号预测了从关联的汇总视图检索值的平均检索时间。默认视图选择将成本估计为所有可能查询的平均值。使用查询跟踪时,估计成本是所有跟踪查询的平均值。特定汇总视图的成本编号在不同的选择列表中可以不同;例如,汇总视图 0、0、1/0、2/0 和 0 在默认选择列表中可以显示不同于在分析中包括跟踪查询的选择中显示的查询成本。

    要计算改进百分比,请将汇总视图的查询成本值除以仅存储 0 级输入单元格时显示的查询成本值。

  • 跟踪的使用情况

    在运行聚合视图选择之前,可以启用查询跟踪以确定最常检索的数据。在某个多维数据集活动期间之后,您可以让 Essbase 在聚合分析过程中包括使用情况统计信息。

  • 汇总时间

    针对实体化的每个聚合视图,在选择过程完成后执行聚合所用的时间会增加。要确定实际聚合时间,必须执行聚合。

建议使用以下过程来优化聚合:

  1. 执行 Perform ASO Aggregations 中所述的默认聚合。

  2. 在聚合脚本中保存默认选择。请参阅适用于 Essbase ASO 多维数据集的聚合脚本

  3. 打开查询跟踪。请参见 Select Views Based on Usage

  4. 让用户对多维数据集执行通常的查询,或者执行要为其设计聚合的批处理查询操作。将跟踪来自所有查询工具的查询。

  5. 在有足够的时间来捕获数据检索要求之后,执行另一个聚合,包括跟踪的数据。

  6. 分析要存储的聚合视图的建议列表,并选择您确定的聚合视图,以提供最佳平衡的系统资源和检索性能。

  7. 实体化所选的聚合视图,并根据需要将所选内容保存在聚合脚本中。

  8. 使用聚合脚本和各种选择标准,重复该过程,直到您认为您可以根据自己的情况选择最佳的聚合视图。

注意:

要针对不同的检索情况(例如生成报表或用户查询)优化聚合,可能需要重复优化过程,为每个情况创建聚合脚本。

自动生成聚合视图

为了提高 Essbase 21c 中聚合存储 (ASO) 多维数据集的性能,您可以将 METADATABASEDAGGVIEWSBUILD 配置为允许 Essbase 根据元数据分析自动创建和维护默认聚合视图。您可以使用 DEFAULTVIEWBUILDSIZE 控制聚合视图大小。

Essbase 19c 之前的发行版中,默认聚合视图由 Essbase 使用基于数据抽样的内部分析来创建。从 Essbase 19c 开始, Essbase 可以使用元数据分析来选择默认视图。

如果您使用基于元数据分析的视图选择算法,可允许 Essbase 执行自动默认聚合视图选择、构建和维护。当您选择使用自动生成的聚合视图时,查询性能会得到改善。这还会影响数据加载时间,并增加数据使用的磁盘空间量,因为在数据加载之后,将立即构建聚合视图(对于现有视图,则为更新)。

要自动生成和管理默认聚合视图,请将 METADATABASEDAGGVIEWSBUILD 配置设置为 AUTO(在 Essbase 21c 或更高版本的版本中),或将 DEFAULTVIEWBUILD 配置设置为 TRUE(在 Essbase 19c 中)。如果启用,聚合视图将根据合格标准自动生成,或者按需(运行执行聚合选择 MaxL 语句时)。

有关资格条件的详细信息,请参阅 METADATABASEDAGGVIEWSBUILD (对于 Essbase 21c )或 DEFAULTVIEWBUILD (对于早期版本)。

要控制所生成的聚合视图的大小,请添加一个额外的应用程序配置设置 DEFAULTVIEWBUILDSIZE 并将其值设置为占总大小的所需比率。例如,DEFAULTVIEWBUILDSIZE AsoSamp 1.2 会将所生成的聚合多维数据集的增长限制在不超过它在聚合之前大小的 20%。

根据使用情况选择视图

捕获 Essbase 聚合存储 (ASO) 多维数据集的检索统计信息,然后使用这些统计信息构建定制的聚合,以适应公司的检索模式。启用查询跟踪以通知汇总视图选择流程时, Essbase 在对多维数据集的分析中包括备用层次。

定期报告生成所需的组织的 Essbase 多维数据集用途可能与持续的用户检索不同。要针对不同的检索情况进行优化,请考虑跟踪情境使用模式并为每种情况创建聚合脚本。

在开始聚合选择过程之前,请确保查询跟踪已开启,并且查询跟踪时间已足够长,可以捕获代表性使用情况。要启用它,请将 MaxL 语句 alter databaseenable query_tracking 语法一起使用。

查询跟踪将查询使用信息保存在内存中。执行以下任一操作将清除查询使用信息。

  • 加载或清除数据

  • 实体化或清除聚合

  • 关闭查询跟踪

查询跟踪将一直保持打开状态,直到您将其关闭、停止应用程序或更改大纲。

注意:

查询跟踪 (tracking) 与查询跟踪 (tracing) 不同。

通过查询跟踪 (tracking),您可以捕获用户检索聚合存储多维数据集的统计信息,以便 Essbase 可以进行基于视图的优化来提高聚合性能。默认情况下启用此功能。相关 MaxL 语句包括:

import query_tracking
export query_tracking
alter database enable query_tracking
query database appname.dbname get cube_size_info

查询跟踪可帮助您监视聚合存储多维数据集的 Essbase 查询性能度量(包括具有混合模式的块存储)。默认情况下禁用此功能。如果启用此功能,Essbase 将在跟踪报表中记录度量。相关配置参数:TRACE_REPORT、QUERYTRACE、QUERYTRACETHRESHOLD、LONGQUERYTIMETHRESHOLD。

根据汇总层用途查看选择

如果管理聚合存储 (ASO) 多维数据集,则可以将视图选择属性应用于存储的层次,以限制 Essbase 选择聚合的特定级别。在 Essbase Web 界面中,您可以使用大纲编辑器在标记为聚集级别使用的选项组中应用这些属性。

默认情况下, Essbase 使用内部机制来决定如何创建聚合。用户定义的视图选择使您可以根据查询数据影响默认视图选择和视图选择。

数据库管理员可以将视图选择属性应用于存储的层次,以限制 Essbase 选择聚合的特定级别。

  • 在 REST API 中,可以使用 aggLevelUsage 属性,使用运行批量大纲编辑端点应用视图选择属性。

注意:

辅助(替代)层次结构是共享层次结构或属性层次结构。

表 37-3 视图选择属性

属性 效果

Default

在主要层次上, Essbase 会考虑所有级别。除非启用了替代汇总,否则不会在辅助层次结构上聚合。

考虑所有级别

将层次结构的所有级别视为聚合的潜在候选项。这是主要层次结构的默认值,但不是次要层次结构的默认值。

不聚合

不沿此层次结构进行聚合。Essbase 选择的所有视图都处于输入级别。

仅考虑最低级别

仅适用于辅助层次结构。Essbase 仅考虑此层次的底层用于聚合。

仅考虑最高级别

仅适用于主要层次结构。仅考虑此层次结构的顶层以进行汇总。

从不聚合到中间级别

适用于主要层次结构。仅选择最高级别和最低级别。

注意:

属性维的底层由零层属性成员组成。使用共享成员形成辅助层次时,底层级别由共享成员的直接父代组成。

Essbase 仅考虑满足所选视图选择属性的视图。

在更改默认属性之前,您应该熟悉多维数据集的主要查询模式;防止选择某些视图会使对这些视图的查询速度变慢,同时提高其他查询的速度。同样,在辅助层次结构上启用“考虑所有级别”可能会加快对该层次结构的查询速度,同时降低其他查询的速度。

要定义视图选择属性,可以使用以下 MaxL 语句:

Essbase ASO 多维数据集的聚合脚本

聚合脚本表示 Essbase 聚合存储 (ASO) 多维数据集上的特定聚合视图选择。它们使您能够灵活地跳过数据加载后可能需要执行的聚合视图选择过程。

关于聚合脚本

每个聚合脚本表示针对多维数据集的特定聚合视图选择。

聚合脚本可以节省时间。例如,加载新数据值后,无需执行其他聚合视图选择。您可以使用聚合脚本中存储的选择来实现聚合,从而加快聚合过程的速度。

聚合脚本还为您提供灵活性。您可以使用它们保存针对不同检索情况优化的聚合视图选择;例如,您可以使用一个脚本来优化月末报告中的检索,使用另一个脚本来满足每日检索要求。

当 ASO 多维数据集包含的选择对多维数据集无效时,该多维数据集的聚合脚本将变得无效。创建聚合时创建聚合脚本。请勿手动修改聚合脚本文件,这可能会导致不可预测的结果。

创建聚合脚本

通过保存的聚合脚本,可以拆分总聚合过程。您可以在与选择聚合的聚合视图不同的时间实现聚合。聚合脚本包含聚合视图选择阶段派生的信息。

要创建聚合脚本,可以使用以下 MaxL 语句:

聚合脚本作为扩展名为 .csc 的文本文件存储在多维数据集目录中,只要大纲中的维级别结构未更改,这些脚本就有效。

为了避免无效聚合脚本文件的潜在混乱,请在聚合脚本不再有用时手动删除它们。

执行聚合脚本

执行聚合脚本将实现其中指定的聚合视图。虽然可以创建多个聚合脚本,但一次只能实现一个聚合。

要执行聚合脚本,可以使用 execute aggregate build MaxL 语句。

Clear Aggregated Data from the Cube

Essbase 聚合存储 (ASO) 多维数据的聚合清除会删除非 0 级数据。清除聚合后,用户查询会从 0 级值动态计算检索的值。

有时,您可能希望手动清除磁盘中的聚合;例如,使磁盘空间可用于磁盘密集型操作。清除聚合会从多维数据集清除除 0 级值之外的所有数据,从而释放磁盘区域供其他使用。

要清除聚合,可以使用 alter database MaxL 语句。

替换多维数据集中的汇总数据

您可以通过清除现有聚合并将不同的聚合视图实体化来替换 Essbase ASO 多维数据集数据的聚合。您可以执行新的聚合视图选择和实体化处理,也可以运行聚合脚本。

考虑在以下情况下替换聚合:

  • 优化聚合视图的选择以提高性能。

  • 创建针对不同检索情况(例如生成报表或用户查询)优化的聚合。

  • 在多维数据集大小显著增长后优化聚合。渐渐地,随着立方体大小的增加,聚合的效率可能会降低。考虑在性能下降明显或多维数据集大小增加到原始大小的 150% 左右时替换聚合。

  • 针对新的或不同的操作环境(例如内存和磁盘资源可用性更改)优化聚合。

在维中的级别数发生更改或者一个或多个维已从大纲中添加或删除后,必须替换聚合脚本和关联的聚合脚本。