跳转至

系统如何删除和存储计算数据

当运行 MD 计算逻辑时,为了将计算出的数据存储到应用程序数据库表,系统会执行以下步骤:

  • 从目标表中删除数据,过滤条件为:
  • 输出科目,即使用 TGKML 脚本计算出的科目
  • 来源(PROC_CALCULATED 或 PROC_CALCULATED_BASIC,取决于计算逻辑是“基础”类型还是“其他”类型);
  • 已过滤或已覆盖的维度
  • 将 TGKML 脚本结果与已存在的、来源不同于 PROC_CALCULATED 或 PROC_CALCULATED_BASIC 的数据之间的差值存储到数据表中,过滤条件为输出科目、已过滤或已覆盖的维度。因此它以“补偿”模式工作。下面来看一些示例以解释此概念。

示例 1:假设我们有一个计算科目 X00000 值的脚本,计算出的值为 150,并且运行脚本前数据库中的数据如下:

Account Amount Origin
X00000 10 PROC_CALCULATED
X00000 80 INPUT_DEFORM

删除后,数据库中的数据如下:

Account Amount Origin
X00000 80 INPUT_DEFORM

由于计算出的值为 150,存储后的数据如下:

Account Amount Origin
X00000 70 PROC_CALCULATED
X00000 80 INPUT_DEFORM

ForceDelete

当即使计划了全局删除也需要强制执行精确删除时,可以将 ForceDelete 语法用作物理科目上日记账语句的输出规范

例如,可以编写:

[LO].[X00000](Entity.Filter([A00]), ForceDelete) := ...