首页 > 解决方案 > 3维之间的分配

问题描述

使用 PBCS 中的计算管理器进行分配。维度:
-账户-
人员
-项目

分配自:
Account001 -> No Person -> No Project = 100;
至:
Account001 -> 人员 A -> 项目 I = 20;
Account001 -> 人 B -> 项目 II = 80;
按司机:
司机 -> 人员 A -> 项目 I = 2;
司机 -> 人 B -> 项目 II = 8;

有没有比下面的代码更好的方法?

我尝试了标准分配功能,但分配的数据没有人员维度信息。
结果是 Account001 -> no Person -> Project I
而不是 Account001 -> Person A -> Project I

FIX ({Entity},/*DIM:Year*/"FY19",/*DIM:Version*/"Working",/*DIM:Customer*/"No Customer",/*DIM:Period*/"Jun",/*DIM:HSP_View*/"BaseData",/*DIM:Scenario*/"Actual")                                            
  FIX (  /*DIM:Person*/@RELATIVE("Total Person",0))                                         
    FIX (    /*DIM:Project*/@RELATIVE("Total Project", 0))                                          
      /*STARTCOMPONENT:SCRIPT*/                                         
        SET CREATENONMISSINGBLK ON;                                     
      /*ENDCOMPONENT*/                                          
      /*STARTCOMPONENT:FORMULA*/                                            
      "A534001" = "534001"->"P000"->"No Project" * 100 / 100 * "Man-hour" / "Man-hour"->"Total Person"->"Total Project";                                            
      /*Project expense for one person = Total entity Expense * manhour of that person of that project / manhour of total person of total project */                                            
      /*ENDCOMPONENT*/                                          
    ENDFIX                                          
  ENDFIX                                                                                    
ENDFIX

想知道是否有更好的方法来实现这一点。非常感谢。

标签: calcessbase

解决方案


使用 Essbase 函数 @MDALLOCATE。您需要花费一些时间来研究文档并使其按要求运行,因为这是一个复杂的功能,并且所有观点都需要正确设置。

我建议你也这样做:

  1. 使用您的测试设置创建 SmartView 表(选项卡:分配来源、驱动程序、结果)
  2. 有一个明确的块所有脚本,以确保@MDALLOCATE 真的在创建块
  3. 创建一个非常小的数据集,您可以在其上设置您的 FIX
  4. 遍历计算脚本/业务规则以使其工作

过程是:

  • 运行#2,从#1 发送数据,运行#3,检查#1 中的结果

尽量避免“SET CREATEONMISSINGBLK ON;” 越多越好。我已经看到分配中的这种结构导致计算时间为 6 小时(!),@MDALLOCATE 它缩短到大约 6 分钟。


推荐阅读