使用单元测试创建业务规则

创建单元测试

创建和调试业务规则时,请务必注意 Oracle Essbase 计算在相对参考系统中进行,即 Essbase 在遍历 FIX 语句中的块时计算提供的语法。因此,创建或调试业务规则的最简便方法是查看每个单独的计算:选择一个要计算的组合,查看它是否有效。这样,您可以在业务规则不起作用考虑少数几个值,并让业务规则快速进行计算。在单元测试成功计算后,您可以使用范围更大的数据集进行测试。

例如,假定以下场景:您希望计算销售成本的百分比来确定在产品中的分布,并为所有月份、所有年份、所有方案和所有部门计算该值,同时将该值写入名为 COS Product% 的新成员。在此场景中,您应为 COS Product% 帐户创建业务规则,然后选择一个产品对一个部门、一个月份、一个年份和一个方案进行单个单元测试。

对帐户密集维中的 COS Product% 成员进行计算的公式为COS Product% = "Cost of Sales" as a Percentage of "Cost of Sales"->Total Product

然后,您可以创建一个电子表格,其中包含对特定组合(单元)执行此计算所需的所有单个数据值。为此,您可以选择 "Sales Central" ->Jan->FY15->Forecast for the "Television".product(计算机配件)。

对于此示例,"Television"(电视)的 "Cost of Sales"(销售成本)值为 12,"Total Product"(产品总计)的累计值为 100,这意味着数据库中只有 COS 帐户的 9 个产品成员的值,这些值都在 "Sales Central"(销售中心)2015 财年 1 月份的预测中。因此,您可以从一个已清理干净且只有 levl0 输入数据的数据库开始,并创建 Oracle Smart View for Office 即席查询,以检索所需的以下数据值。
为示例场景检索的数据

此组合或单元测试的公式为:COS Product% (D3) = = COS (D1) as a Percentage of Total Product COS (D2),这意味着此电子表格包含对此业务规则进行单元测试所需的所有内容。

使用单元测试创建业务规则

启动业务规则以使用 COS(公式的第一部分)计算 COS Product% = 成员。查看目标行(第 3 行)与数据源之间的差异。因此,对于 COS(单个 COS),请查看每个标识了 Television 的第 3 行和第 1 行的 C 列之间的差异。第 3 行和第 1 行成员之间的唯一差异为 Account;我们只需对其进行如下指定:

COS Product% = COS %

对公式的第二部分 (Total COS) 执行相同操作;在本例中,第二部分是 Product 顶级的 COS。因为第 3 行和第 2 行之间存在两个差异,即 COS 和 Product,所以还应指定 Product 中的位置,以完成以下公式:

COS Product% = COS % ->Product;

此时,执行此规则将检索 #missing 而非正确总计,如下图所示:
为示例场景检索的数据
您必须预先计算所需数据(单元格 D2 中的 COS 总计),以获得正确总计。

预先计算所需数据

要预先计算所需数据以确保业务规则 COS Product% = COS % ->Product; 返回正确的值,必须对规则进行如下修改将 COS包含在内:
Fix (COS)
Agg (Product);
EndFix
COS Product% = COS % ->Product;