计算规则
简介¶
计算规则允许您运行复杂的计算操作,并可使用类似于 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( |
| Average(平均值函数) | 值的算术平均值。要使用的语法为 ... := Average( |