带维度规范的“求和”计算逻辑的定义
定义带维度规范的"求和"计算逻辑¶
可以在求和计算逻辑中定义维度规范
- 表头(header):从计算逻辑窗口中的"维度筛选(Filter on Dimensions)"选项卡;
- 明细(detail):从求和计算逻辑的输入科目定义窗口。在这种情况下,规范是为每个输入科目定义的。
定义代码集¶
给定一个维度,为了定义一组元素,可以使用一种语法来组合单个元素或层次的节点。表达式由简单的代数给出。原子为:
- 方括号之间的简单代码(示例:[C001])
- 层次的节点,其中层次代码在方括号之间,并用符号"|"与节点代码分隔(示例:[$|N01])
- 维度的所有元素(All)
运算符(遵循运算符之间通常的优先级顺序)为:
- 并集 <代码集 1> + <代码集 2>(示例:[C001] + [$|N01])
- 交集 <代码集 1> * <代码集 2>(示例:[C001] * [$|N01])
- 差集 <代码集 1> - <代码集 2>(示例:[G|S01] - [$|N01])
- 括号(示例:([C001] + [$|N01]) * [C002])
筛选器¶
筛选器允许"限制"要运行的输入数据集。
可以应用筛选器的维度是类别、自定义维度和实体。
为了在特定维度上定义筛选器,必须在计算逻辑窗口的"维度筛选(Filter on dimensions)"选项卡中取消选择"覆盖(override)"字段。有关更多详细信息,请参阅以下关于覆盖管理和从固定点读取的段落。
筛选器可以在两个级别定义:
- 表头(header):这些筛选器可以通过在与所选维度相关的"筛选器(Filter)"字段中插入代码集来定义。筛选器将应用于所有输入科目,将数据读取限制为筛选维度的特定子集。例如,求和计算逻辑可能仅在一部分成本中心上读取和写入。
- 单个科目(single account):这些筛选器特定于输入科目或科目节点。它们可以从明细窗口通过在"筛选 <维度>(Filter
) "列中插入代码集来定义。筛选器将输入科目的读取限制为筛选维度的特定子集。例如,定义逻辑的输入科目之一可能只需在一部分成本中心上读取。
多个筛选器级别(运行筛选器、表头筛选器、单个科目筛选器)的定义在输入科目上被解释为对已定义筛选器级别相交的子集进行筛选。例如,当运行一个求和计算逻辑,表头筛选器为成本中心的 A 子集,然后选择运行筛选器为成本中心的 B 子集时,逻辑将在 A/B 交集子集上运行。
而当运行一个求和计算逻辑,表头筛选器为成本中心的 A 子集,并为单个输入科目指定了成本中心的 B 子集筛选器时,该科目将仅在 A/B 交集子集上读取。
以下示例展示如何定义带维度规范的"求和"类型计算逻辑。
示例 1
假设:
- 科目 10110 定义为科目 10110_010 和 10110_040 之和;
- 代码集 [D11]+[D13] 已定义为自定义维度 1 上的表头筛选器;
- 筛选器已在科目 10110_010 上的自定义维度 1 [D11] 上定义;
- 以下输入数据集可用:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110_010 | D11 | D21 | 150 | INPUT_WEB |
| 10010_010 | D12 | D22 | 80 | INPUT_WEB |
| 10110_010 | D13 | D22 | 65 | INPUT_WEB |
| 10010_040 | D11 | D21 | 30 | INPUT_WEB |
| 10010_040 | D12 | D21 | 10 | INPUT_WEB |
| 10010_040 | D13 | D22 | 50 | INPUT_WEB |
系统将读取以下数据集:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110_010 | D11 | D21 | 150 | INPUT_WEB |
| 10010_040 | D11 | D21 | 30 | INPUT_WEB |
| 10010_040 | D13 | D22 | 50 | INPUT_WEB |
数据处理后,以下数据将写入数据库:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110 | D11 | D21 | 150 + 30 | PROC_CALCULATED |
| 10010 | D13 | D22 | 50 | PROC_CALCULATED |
覆盖和从固定点读取¶
覆盖¶
它允许定义写入数据时要分配给给定维度的特定值。例如,您可能需要为输出科目分配特定类别。覆盖可以从相应维度的"覆盖(Override)"字段中定义。
可以应用覆盖的维度是类别和自定义维度。
不能在运行筛选器之外写入数据。如果求和计算逻辑尝试通过定义覆盖在筛选器之外写入,系统不会运行该逻辑,并在审计中记录错误消息。
不能在启用了"在日记账上运行(Run on journals)"选项的逻辑的类别上定义覆盖。
示例 1
假设:
- 科目 10110 定义为科目 10110_010 和 10110_040 之和;
- 元素 [D05] 已设置为自定义维度 1 上的覆盖;
- 以下输入数据集可用:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110_010 | D11 | D21 | 150 | INPUT_WEB |
| 10010_010 | D12 | D22 | 80 | INPUT_WEB |
| 10010_040 | D11 | D21 | 30 | INPUT_WEB |
| 10010_040 | D12 | D21 | 10 | INPUT_WEB |
数据处理后,以下数据将写入数据库:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110 | D05 | D21 | 150 + 30 + 10 | PROC_CALCULATED |
| 10010 | D05 | D22 | 80 | PROC_CALCULATED |
从固定点读取¶
如果为特定维度定义了覆盖,则在该维度上也可以指定源元素的子集。
从固定点读取可以定义为:
- 在表头上(on header):可以通过在与所选维度相关的"筛选器(Filter)"字段中插入代码集来定义。从固定点读取将应用于未定义特定子集的所有输入科目,将数据读取限制为维度的特定子集。例如,您可以仅在一部分成本中心上读取。
- 在科目上(on account):可以从明细窗口通过在"<维度> 输入(
input) "列中插入代码集来定义。这将输入科目的读取限制为筛选维度的特定子集,并且优先于表头上定义的内容。例如,某个输入科目可能只需在一部分成本中心上读取。
示例 1
假设:
- 科目 10110 定义为科目 10110_010 和 10110_040 之和;
- 代码集 [D05] 已定义为自定义维度 1 上的覆盖;
- 代码集 [D11]+[D13] 已定义为自定义维度 1 上的表头从固定点读取;
- 从固定点读取已在科目 10110_010 上的自定义维度 1 [D12] 上定义;
- 以下输入数据集可用:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110_010 | D11 | D21 | 150 | INPUT_WEB |
| 10010_010 | D12 | D22 | 80 | INPUT_WEB |
| 10110_010 | D13 | D22 | 65 | INPUT_WEB |
| 10010_040 | D11 | D21 | 30 | INPUT_WEB |
| 10010_040 | D12 | D21 | 10 | INPUT_WEB |
| 10010_040 | D13 | D22 | 50 | INPUT_WEB |
系统将读取以下数据集:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110_010 | D12 | D22 | 80 | INPUT_WEB |
| 10010_040 | D11 | D21 | 30 | INPUT_WEB |
| 10010_040 | D13 | D22 | 50 | INPUT_WEB |
数据处理后,以下数据将写入数据库:
| 科目 | 自定义维度 1 | 自定义维度 2 | 金额 | 来源 |
|---|---|---|---|---|
| 10110 | D05 | D21 | 30 | PROC_CALCULATED |
| 10010 | D05 | D22 | 80 + 50 | PROC_CALCULATED |