SAP Analytics Cloud: 如何进行模型优化


综述:

在使用SAP Analytics Cloud时,随着使用的深入和数据量的增加,我们的模型会变得越来越复杂,查询相应时间有可能会变得不理想。本篇文章给大家来分享如何分析模型的复杂度,并根据模型的“健康检查清单”进行模型优化,从而提升模型的性能。


分析模型的复杂度:

模型的设计没有好坏之分,只要贴合具体的业务场景,能够正确反映业务需求的模型都是好模型。然而在实践中,当模型过于复杂时,就会影响到查询的响应时间。

这里我们总结了一些和模型复杂度相关的指标,并展示为雷达图。在设计模型时,大家不妨按照下图绘制属于自己的模型复杂度雷达图。当你的模型覆盖的面积过广时,你的模型可能过于复杂,我们可以考虑进行模型优化。

能够帮助大家分析模型的复杂度。。例如,一些具有大量维度成员和记录数量的模型有良好的响应时间,但在有限维度时,反而会产生性能问题。

首先,你需要按照以下提示记录你的模型指标:

NM: 每个维度的平均成员数量

NA: 账户/度量的数量

DA 账户的层级结构的深度

NExcAggr: 包含异常聚合的账户数量

NExcAggrDim: 包含异常聚合的维度的最大数量

NRESTRICT: 包含RESTRICT类型的账户的数量

NLOOKUP 包含LOOKUP类型的账户的数量

NLINKLINK账户的数量

NFormula带公式账户的数量

L: 账户公式的最大嵌套级别

在记录后,按照以下图示绘制模型复杂度雷达图:

Image: https://blogs.sap.com/2021/03/18/sap-analytics-cloud-for-planning-modeling-checklist/

上图列举了两种不同的样例模型:

  1. 蓝色轮廓的样例模型A,尽管维度有限,但由于其大量的动态计算和特定的聚合,使其会消耗较多的计算资源,可能会影响查询相应时间。
  2. 红色轮廓的样例模型B,尽管拥有很少的实时计算,但是模型包含了较多的度量和维度成员,也使其成为一个比较复杂的模型。

因此,以上两种模型尽管非常不同,但都是“相对复杂”的。当您的模型覆盖的区域比以上两种模型更大时,您则可以考虑进行模型优化。下面我们为您撰写了模型的“健康检查清单”。当您的模型查询相应性能变得不理想时,您可以考虑参考以下清单逐项进行优化。


模型健康检查清单:

01 维度的数据颗粒度的检验

我们应该评估每个维度的数据颗粒度是否过细。换而言之,在使用SAP Analytics Cloud进行计划时,我们需要评估我们的模型是否需要如此细粒度的数据。比如,总账(General Ledger)  通常包含大量的明细数据,然而这些明细数据在计划中通常是不被需要的。

应变方案:如果我们评估后确定的确需要明细数据,我们可以新建一个专门的模型来加载用于分析目的详细数据,然后在计划中使用另外一个经过精简和聚合后的模型来进行预算计划。或者,我们也可以将业务明细数据继续留在源系统中,在需要时,再从SAP Analytics Cloud使用钻取流程来查看明细数据。

02 维度总数的控制

除了维度的数据颗粒度外(通常涉及维度成员的数量和维度内层级结构的深度),模型内的维度数量之和也很重要。过多的维度数量使得整个模型的管理变得具有挑战性,会提升数据的输入的复杂性,并常常导致不必要的大而零散的数据模型。这里我们建议控制计划模型的维度总数在8-12之间(包括默认必须维度如账户、日期和版本等)。如果模型的维度数量超出了这个范围,设计方案的人员应进行评估,考虑使用替代层级结构、导航属性和通过列注释来进行注释等方案,以最大限度减少维度总数。

03 公有/私有版本的数据加载

当第一次启动数据输入会话时,公共版本的数据会在后台缓存到该用户的专有的私有版本中,这可能会导致大量的数据被复制。

应变方案:用户可以使用适当的过滤器,预先创建一个私有版本。此时复制数据的是数据的子集而不是全部。使用这样的私有版本将在输入新数据时获得非常显著的性能提升。我们通常建议每个私有版本都使用必要的过滤器创建。这些过滤器的过滤掉的不必要内容越多,性能提升效果就越好。

04 账户公式

“账户公式”中的动态计算是一个非常强大的功能。可是,这需要消耗很多的计算资源来处理器cube的计算,尤其是当公式数量众多或使用嵌套计算时(一个公式依赖于另一个公式等等)。因此,使用“账户公式”可能会导致性能受到影响。

应变方案:可以考虑在“数据操作”中使用“高级公式”的功能来替代账户公式。“高级公式”功能的操作不是实时执行的,而是仅在用户请求时执行,因此会减少整个系统的负担。

05 异常聚合

多维引擎的一个自然行为是沿着多个层级结构来进行数据的聚合。在任何模型中,计算引擎执行的聚合计算的数量都是非常壮观的。假设我们有两个维度,每个维度的层次结构有九层深(有十个叶子成员),这已经创建了100个潜在的聚合组合。幸运的是,SAP Analytics Cloud利用SAP HANA数据库可以光速执行这些计算。然而,当涉及到特定的聚合时,例如平均值或是最大最小值等,这些计算不仅需要执行标准的聚合,还要在第二轮中计算特定的聚合,这将导致性能下降。

应变方考虑使用“数据操作”的“高级公式”进行其中的一些计算

06 零值数据

和空值(NULL)不同,零值数据实际上可以被存储并消耗计算资源的。有时,您可以使用建模器中的函数来删除数据事实,从而实现从数据库中删除全零数据。

注意:如果你使用了高级公式,则必须在新的计算发生之前将一些值重置为零。在这种情况下,可以考虑分配一个空值(NULL)而不是零。

07 数据访问权限

数据访问权限的配置对查询性能是有影响的。一般来说,用户数据访问限制越严格,性能就越好。这里的基本原理是: 查询只返回用户有权查询的数据。然而,数据访问配置的复杂性和规模可能会对功能管理员产生影响。


总结:

本文总结了判断并识别SAP Analytics Cloud中的模型复杂度的方法并给出了具体案例。同时,也总结了一个“模型健康检查清单”,用于帮助大家识别复杂的模型并进行模型优化。经过优化过的模型可以更快的回答查询,同时也可以方便大家同时管理很多模型。

更多关于SAP Analytics Cloud的使用技巧,请关注话题标签:SAP Analytics Cloud

想要全面了解如何使用SAP Analytics Cloud 进行预算计划,欢迎阅读中文官方指南:SAP Analytics Cloud 中文帮助手册

欢迎大家在文章评论中继续分享大家的模型优化小技巧。

原作者:Damien FRIBOURG

原文链接:https://blogs.sap.com/2021/03/18/sap-analytics-cloud-for-planning-modeling-checklist/