跳转至

计算规则

简介

计算规则允许您运行复杂的计算操作,并可使用类似于 MD 语法的语法编写。

注意:该操作仅从 SP25 版本起可用,且只能使用 ESG 许可证查看和保存。

仅当为用户启用了功能“0004167 - 计算规则”时,该功能才可用。

每条计算规则都基于操作数的定义,具有自己的逻辑维度和脚本维度,使用类似于 MD 语法的语法。计算规则集可以与“使用计算规则插入”DTP 操作关联。

脚本语法

用于表达每个脚本的语法基于自定义 MD 计算语法。遵循以下约定:

  • 脚本始终以表示法 TGKML 1.0 开头,并由多个语句组成。
  • 在脚本中,语句之间用“;”分隔。
  • 在每个语句中,赋值使用“:=”。
  • 语句必须只有一个赋值,并且必须以“;”结尾。
  • 可以使用 2 个多维数据集:[TARGET] 和 [SOURCE],分别表示写入数据集和读取数据集。
  • 对于每个操作数,多维数据集始终是必填的,并且必须表示为 [cube].[operand]。
  • [TARGET] 只能出现在赋值的左侧([TARGET].[operand],表示输出操作数)。
  • 只有输出操作数可以出现在赋值的左侧。
  • [SOURCE] 只能出现在赋值的右侧([SOURCE].[operand],表示输入操作数)。
  • 要插入注释,请使用“//”:// 符号之后的任何字符直到行尾都将被忽略。注释可以插入脚本中的任何位置。
  • 赋值始终为以下类型:[TARGET].[operand] := ,其中表达式可以是简单赋值,如:[SOURCE].[operand]、常量,或包含数学运算或语言特定操作(定点、边界、过滤器等)的表达式。
  • 可以使用算术运算:+、-、*、/,表达式可以包含与标量的数学运算。
  • 可以使用括号 ( ) 来指示表达式的执行顺序。

逻辑维度窗口

此窗口包含与操作数关联的逻辑维度列表。默认情况下,列表按脚本操作数代码列排序。每个操作数,无论是输入还是输出,都可以关联多个逻辑维度(例如 GENDER、GEOGRAPHICAL_AREA 等),并且每个逻辑维度必须映射到数据集字段。

对于每个语句,计算会识别为其组成的操作数(输入/输出)定义的逻辑维度信息。

如果... 则...
组成它的输入操作数具有相同的逻辑维度。 操作数是统一的
至少一个输入操作数的逻辑维度不同。 操作数是非统一的不规则的
没有共享的逻辑维度。 操作数是分离的
操作数在逻辑维度表中没有定义行。 操作数没有逻辑维度

计算规则支持的功能

下面提供了可通过计算规则运行的函数列表。

元素 描述
复制 将输入操作数简单复制到输出操作数(统一逻辑维度和非统一逻辑维度均可)。
算术表达式(加法、减法、乘法、除法) 在输入操作数之间(具有同质、非同质和不连续逻辑维度)。如果公式的结果为 0,该行仍会输出。
输出操作数上的覆盖 对一个或多个逻辑维度的输出操作数进行覆盖。
从定点读取 从定点读取: - 逻辑维度的值 - 在多个不同的逻辑维度上,用逗号分隔 - .All - .NotNull - .Null
对输入操作数的逻辑维度进行过滤 对输入操作数的逻辑维度按值或逗号分隔的值列表进行过滤。
对输入操作数的边界
临时计算 '@' 使用表示法 [TARGET].@MyTemp := … 保存临时计算
DiscardZeroes
NotNode
RoundNode
TotalAmount
UnaryMinusNode
Max_FunctionNode
Min_FunctionNode
Sum_FunctionNode

附加功能

元素 描述
Abs(绝对值函数) 返回作为输入传递的表达式的无符号结果。要使用的语法为 ... := Abs (espr)
If then else 允许使用条件结构来评估表达式并驱动输出:用户需自行管理所用维度的同质性。要使用的语法为 ... := if (cond) then espr1 [else espr2] end;
Median 表示值集合的中位数。要使用的语法为 ... := Median( , logical dimension1, ..., logical dimension N);
Average(平均值函数) 值的算术平均值。要使用的语法为 ... := Average( , logical dimension1, ..., logical dimension N);