跳转至

舍入与平均

在 TGKML 脚本中可以:

  • 将科目的值舍入到给定数量的有效数字;
  • 计算给定表达式的平均值。

舍入

用于将科目的值舍入到给定数量的有效数字(小数位数)的函数是

Round(n)

其中 n 是指定要考虑的小数位数的整数。

因此,如果我们写

… := [C00000](Round(2));

则 C00000 科目的值被读取为舍入到两位小数。

另一方面,如果我们写

[LO].[X00000](Round(2)) := …;

则输出科目 X00000 的值被舍入到两位小数。

在输出中使用 Round(n) 函数时,舍入应用于包含未计算来源的负金额的最终结果。例如,如果我们将给出 1 的计算结果舍入到零位小数,而数据库中已包含金额为 0.1 且来源为其他的数据,我们将获得一条金额为 1(1 - 0.1 = 0.9 舍入为 1)且来源为计算的记录。因此数据库上的总计将为 1.1。

而在输入中使用 Round(n) 函数时,舍入仅应用于数据读取,在前面的示例中,我们将获得一条金额为 0.9(Round(1,0) - 0.1 = 1 - 0.1)且来源为计算的记录。数据库上的总计将为 1。

平均值

Tagetik 为用户提供两个不同的实用程序

  • Avg
  • AvgDomain

用于计算平均值。

Avg 实用程序

Avg(, )

将考虑指定维度获得的值除以对值有贡献的已设置元组数。

AvgDomain 实用程序

AvgDomain(, )

将考虑指定维度获得的值除以已设置且对值没有贡献的元组数。

以下内容可作为 Avg 和 AvgDomain 函数的输入维度规范输入:

  • 一个或多个 Dim.Parent() 类型的规范:在这种情况下,根据 Parent 逻辑与指定层次结构节点相关的每个最低级元素,将被关联一个等于根据 Parent 逻辑与同一节点相关的最低级元素上存在的平均金额的金额;
  • 一个或多个 Dim.Ancestor(, ) 类型的规范:在这种情况下,根据 Ancestor 逻辑与指定层次结构节点相关的每个最低级元素,将被关联一个等于根据 Ancestor 逻辑与同一节点相关的最低级元素上存在的平均金额的金额;
  • Time.PN:在这种情况下,n 元组的平均值被关联到 PN 时间区间上的每个 n 元组;
  • Time.Scenario:n 元组的平均值被关联到当前场景上的每个 n 元组;

示例 1

假设我们有一个在自定义维度 1 上定义的层次结构的节点 01,元素 D01、D02、D03、D04 与之相关,以及一个在自定义维度 1 上定义的层次结构的节点 01,元素 D01、D02、D03、D04 与之相关,并且在这些元素上我们有以下值

Dest1 金额
D01 10
D02 20
D03 30
D04

那么如果我们写

… := Avg ([C00000], Dest1.Parent([01]));

结果将为

Dest1 金额
D01 60/3 = 20
D02 60/3 = 20
D03 60/3 = 20

而如果我们写

… := AvgDomain ([C00000], Dest1.Parent([01]));

结果将为

Dest1 金额
D01 60/4 = 15
D02 60/4 = 15
D03 60/4 = 15
D04 60/4 = 15

.