确保在维度顺序上保持一致性将有助于提高模型的性能。这种一致性与模块和单个订单项有关。为什么订单很重要?Anaplan创建并使用索引来执行计算。尺寸相交的模块中的每个单元格都会给出一个索引号。
这是客户和产品尺寸的两个简单模块。在第一个模块中,产品是第一和客户第二,在第二个模块中,客户是第一,产品排在第二。
在此模型中,有一个第三个模块将收入计算为价格 *量。
Anaplan将索引分配给模块中的交叉点。这是两个模块的索引值。请注意,某些交叉点对模块的索引相同:客户1和产品1,Customer 2和Product 2,以及客户3和产品3,其余的单元格具有不同的索引编号。客户1和产品2在顶部模块中的值为4,底部模块中的值为2。
计算是收入=价格 *数量。
为了运行计算,Anaplan通过匹配两个模块的索引值来执行以下操作。
由于索引值不对齐,因此处理器在执行计算之前会扫描索引值以查找匹配。
当重新排序模块中的尺寸时,这些是索引值:
现在每个模块的索引值都对齐。由于相同维度结构的线条项目具有相同的布局,因此数据在内存中线性布置。计算过程以完全线性且可预测的方式访问内存。Anaplan的微处理器和内存子系统被优化,以识别这种访问模式并预先获取所需的数据。
模块之间的尺寸顺序如何不同?当您构建模块时,Anaplan使用将列表拖到创建模块对话框的顺序。该订单还取决于添加列表的位置。您添加到“页面”区域的列表是首先,然后将您添加到“行”区域的列表,最后是添加到“列”区域的列表。
重新排序列表并确保一致性很简单。按着这些次序:
关于子集和行项目子集的一个谨慎。在下面的示例中,我们在模块中添加了一个子集和一个订单项子集:
适用于如下:
单击省略号,将尺寸重新排序为:
首先列出了一般列表,然后是子集,然后是行项目子集。
您仍然可以通过在适用于列中双击并按照正确的顺序复制或键入尺寸来重新排序尺寸。
这是正常的后续问题,不幸的是,答案是“取决于”。通过研究,我们发现这完全取决于模块中的数据。另外,如果使用子集,它可能会感到非常困惑。客户列表可能大于产品列表,但是如果使用的客户比例小于产品,那么什么?
另外,我们不提倡按大小顺序设置的常规列表中订购列表;这些列表应以层次顺序到底到最低为层,因此,根据定义,最大至最大的列表。所以我们的建议是持续的。考虑一下您如何描述问题。企业是否逐列产品或为客户谈论客户?同意公约,并坚持下去。
计算性能仅与常见的源和目标之间的列表。一个或另一个单独的列表的顺序与计算速度无关。
很酷的帖子!表演调整的绝佳见解!
感谢您的简单,优雅,有力的解释。
谢谢大卫!在您的示例上跟进,如果一个维度(产品)比另一个维度大?我想我记得将它们放在较小到较大的顺序中(并按照您指示的范围保持整个模块的一致性),但不确定是否有所作为。
@guillaume_arnau好问题,我们以前曾被问到过一个。
证据不像答案那样取决于模块中的DTAA的一致性那么结论。有时,较小到较大的速度更快,而其他时间更大,更小的速度更快。
然后,您开始在子集中获取Faxctor,并且变得更加复杂。如有疑问,值得尝试并查看是否存在明显区别
所以,实际上,订购的一致性比先出现的更为关键。我总是会主张以您思考或描述业务并保持一致的方式订购模块。这可能与您在“常规列表”中订购列表的方式有所不同
@dkolka列表属性实际上是订单项,因此没有差异。但是,除非必不可少,否则我们不主张使用它们。使用模块和行项目是最好的做法,而不是列表属性
@davidsmith- 在“子集和行项目子集”部分中,您可以注意Anaplan将如何基于一般列表自动re序,然后是LIS集。
由于子集通常是在开发中的不同时间创建的,因此很难将它们保持在一般列表中的主要列表的订购方式。因此,例如,如果您有一个模块2个列表子集:
但是,当单击应用中的省略号时,模型尺寸按以下顺序显示:
因此,适用于自然地重新排序为:B:子集,A:子集
所以我的问题是:始终手动剪切/粘贴列表子集维度以使其顺序与相应的一般列表的顺序保持一致是最佳实践吗?这样做会产生积极的绩效影响吗?
谢谢!