使用计算规则插入

重要:此操作只能在具有 ESG 模块许可证的情况下显示和使用。
功能¶
使用计算规则插入操作允许您执行复杂计算,按源数据集行而非按列处理值。具体而言,给定一个源数据集和一组计算规则,此操作允许您将计算生成的行插入到目标数据集中。
对于此类操作,可以指定特定属性。有关描述,参见操作页面。
给定一个操作,对于脚本的每个语句,系统会运行定义的计算,同时考虑每个操作数(无论是输入还是输出)的逻辑维度。与自定义 MD 计算一样,系统可以组合多个统一、非统一或分离的操作数,或无逻辑维度的操作数,对数据中存在的信息进行分组,并应用 MD 语法规则。
逻辑维度和脚本在计算规则脚本页面中定义(参见计算规则页面)。
有关可使用计算规则运行的函数列表,参见计算规则支持的功能。
注意:要为该操作运行的脚本集由系统在启动 DTP 时确定。
所有具有操作中指定标签的脚本都会被考虑,其中会选取启用了活动标志的脚本;并选择满足执行条件的脚本。如果指定了开始和/或结束日期,它们必须在期间场景范围内有效。开始和结束日期仅在启动场景/期间提交流程时检查。
示例 1:输出和输入操作数在反转列上具有逻辑维度
源数据集¶
| Operand Field | Column_1 | Column_2 | Unit_Measurement | Value Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 50 |
| OPERAND_INPUT | North | Men | Km | 40 |
| OPERAND_INPUT | Center | Woman | m | 70 |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | Km | 55 |
| OPERAND_INPUT | South | Men | m | 35 |
| OPERAND_INPUT | East | Rather not say | dm | 9 |
| OPERAND_INPUT | East | Rather not say | dm | 10 |
| OPERAND_INPUT | East | Rather not say | dm | 11 |
逻辑维度表¶
| Operand Code Script | Logical Dimension | Dataset Field |
|---|---|---|
| OPERAND_INPUT | GEOGRAPHIC_AREA | Column_1 |
| OPERAND_INPUT | GENDER | Column_2 |
| OPERAND_OUTPUT | GEOGRAPHIC_AREA | Column_2 |
| OPERAND_OUTPUT | GENDER | Column_1 |
脚本¶
TGKML 1.0 [TARGET].[OPERAND_OUTPUT] := [SOURCE].[OPERAND_INPUT];
目标数据集¶
| Operand Field | Column_1 | Column_2 | Value Field |
|---|---|---|---|
| OPERAND_OUTPUT | Woman | North | 50 |
| OPERAND_OUTPUT | Men | North | 40 |
| OPERAND_OUTPUT | Woman | Center | 70 |
| OPERAND_OUTPUT | Men | Center | 30 |
| OPERAND_OUTPUT | Woman | South | 55 |
| OPERAND_OUTPUT | Men | South | 35 |
| OPERAND_OUTPUT | Rather not say | East | 9 |
| OPERAND_OUTPUT | Rather not say | East | 10 |
| OPERAND_OUTPUT | Rather not say | East | 11 |
示例 2:输出和输入操作数具有非统一逻辑维度
源数据集¶
| Operand Field | Column_1 | Column_2 | Unit_Measurement | Value Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 50 |
| OPERAND_INPUT | North | Men | Km | 40 |
| OPERAND_INPUT | Center | Woman | m | 70 |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | Km | 55 |
| OPERAND_INPUT | South | Men | m | 35 |
| OPERAND_INPUT | East | Rather not say | dm | 9 |
| OPERAND_INPUT | East | Rather not say | dm | 10 |
| OPERAND_INPUT | East | Rather not say | dm | 11 |
逻辑维度表¶
| Operand Code Script | Logical dimension | Dataset Field |
|---|---|---|
| OPERAND_INPUT | GEOGRAPHIC_AREA | Column_1 |
| OPERAND_INPUT | GENDER | Column_2 |
| OPERAND_OUTPUT | GENDER | Column_1 |
脚本¶
TGKML 1.0 [TARGET].[OPERAND_OUTPUT] := [SOURCE].[OPERAND_INPUT];
计算 Operand_output¶
系统将值复制到输出,然后按逻辑维度 'GENDER' 对具有相同值的行进行分组。
目标数据集¶
| Operand Field | Column_1 | Value Field |
|---|---|---|
| OPERAND_OUTPUT | Woman | 175 = (50+70+55) |
| OPERAND_OUTPUT | Men | 105 = (40+30+35) |
| OPERAND_OUTPUT | Rather not say | 30 = (9+10+11) |
审计信息¶
审计窗口中显示以下信息:
- 在操作内,与配置步骤中插入的标签相关联的每个脚本
-
在每个脚本内,脚本中包含的每个语句
-
对于每个语句,以读取模式和写入模式运行的查询的详细信息
使用参考数据集¶
在操作设置步骤中,可以设置一个参考数据集,用于对规则脚本每个语句中读取的源数据集值运行隐式转换。
此数据集必须具有:
- 一个具有 Attribute 参考类型的字段,该字段必须包含要乘以原始数据的转换系数,按其条件。
- 一个没有参考类型的字段,其名称与源数据集和目标数据集中用作操作数字段的字段相同,以便将输出操作数与相应的转换系数隐式关联。
- 一个或多个 Condition 参考类型字段,以便能够识别正确的转换系数
与其他 DTP 操作中使用参考数据集的情况一样,条件字段会按代码自动与源数据集字段关联,并且可以通过在参考数据集中插入带 '%' 字符的值来使用"特殊"条件。
例如,A% 表示所有以 A 开头的内容。因此,将使用通过 SQL like 运算符 (%) 定义的条件,而非值之间的相等性。而 null 值则表示对任何值都有效的关系。
重要:此操作不仅使用数据库资源,还在内存中运行,因此在性能方面,必须考虑正在处理的源数据集的行数。
在转换的情况下,参考数据集的行数也可能对性能产生重大影响(根据所执行的测试,在源数据集有数百万行并产生约 100,000 行输出的情况下,应用服务器的内存消耗约为 500 MB)。
对于前面的示例,如果使用相同的源数据集
示例 1
源数据集¶
| Operand_Field | Column_1 | Column_2 | Unit_Measurement | Value Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 50 |
| OPERAND_INPUT | North | Men | Km | 40 |
| OPERAND_INPUT | Center | Woman | m | 70 |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | Km | 55 |
| OPERAND_INPUT | South | Men | m | 35 |
| OPERAND_INPUT | East | Rather not say | dm | 9 |
| OPERAND_INPUT | East | Rather not say | dm | 10 |
| OPERAND_INPUT | East | Rather not say | dm | 11 |
脚本¶
TGKML 1.0 [TARGET].[OPERAND_OUTPUT] := [SOURCE].[OPERAND_INPUT];
参考数据集¶
| Operand_Field | Unit_Measurement | Conversion_Factor | Filter_Column | Filter_Column |
|---|---|---|---|---|
| OPERAND_OUTPUT | m | 10 | 0 | |
| OPERAND_OUTPUT | Km | 0.1 | 0 | |
| OPERAND_OUTPUT | cm | 1000 | 0 | |
| OPERAND_OUTPUT | dm | 10 | 0 | |
| OPERAND_OUTPUT | dm | 100 | Value_Field > 9 | 1 |
| OPERAND_OUTPUT | dm | 1000 | Value_Field > 10 | 2 |
在运行每个语句之前,系统通过按 OPERAND_OUTPUT 筛选参考数据集的行,并将源值乘以所识别的转换系数,来扩充输入数据。
扩充后的源数据集¶
| Operand_Field | Column_1 | Column_2 | Unit_Measurement | Value_Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 500 = (50*10) |
| OPERAND_INPUT | North | Men | km | 4 = (40*0.1) |
| OPERAND_INPUT | Center | Woman | m | 700 = (70*10) |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | km | 5.5 = (55*0.1) |
| OPERAND_INPUT | South | Men | m | 350 = (35*10) |
| OPERAND_INPUT | East | Rather not say | dm | 90 = (9*10) |
| OPERAND_INPUT | East | Rather not say | dm | 1000 = (10*100) |
| OPERAND_INPUT | East | Rather not say | dm | 11000 = (11*1000) |
计算 Operand_output¶
系统将值复制到输出,同时保持逻辑维度的拆分。
目标数据集¶
| Operand_Field | Column_1 | Column_2 | Value_Field |
|---|---|---|---|
| OPERAND_OUTPUT | Woman | North | 500 |
| OPERAND_OUTPUT | Men | North | 4 |
| OPERAND_OUTPUT | Woman | Center | 700 |
| OPERAND_OUTPUT | Men | Center | 30 |
| OPERAND_OUTPUT | Woman | South | 5.5 |
| OPERAND_OUTPUT | Men | South | 350 |
| OPERAND_OUTPUT | Rather not say | East | 90 |
| OPERAND_OUTPUT | Rather not say | East | 1000 |
| OPERAND_OUTPUT | Rather not say | East | 11000 |
示例 2
源数据集¶
| Operand_Field | Column_1 | Column_2 | Unit_Measurement | Value Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 50 |
| OPERAND_INPUT | North | Men | Km | 40 |
| OPERAND_INPUT | Center | Woman | m | 70 |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | Km | 55 |
| OPERAND_INPUT | South | Men | m | 35 |
| OPERAND_INPUT | East | Rather not say | dm | 9 |
| OPERAND_INPUT | East | Rather not say | dm | 10 |
| OPERAND_INPUT | East | Rather not say | dm | 11 |
脚本¶
TGKML 1.0 [TARGET].[OPERAND_OUTPUT] := [SOURCE].[OPERAND_INPUT];
参考数据集¶
| Operand_Field | Unit_Measurement | Conversion_Factor | Filter_Column | Filter_Column |
|---|---|---|---|---|
| OPERAND_OUTPUT | m | 10 | 0 | |
| OPERAND_OUTPUT | Km | 0.1 | 0 | |
| OPERAND_OUTPUT | cm | 1000 | 0 | |
| OPERAND_OUTPUT | dm | 10 | 0 | |
| OPERAND_OUTPUT | dm | 100 | Value_Field > 9 | 1 |
| OPERAND_OUTPUT | dm | 1000 | Value_Field > 10 | 2 |
在运行每个语句之前,系统通过按 OPERAND_OUTPUT 筛选参考数据集的行,并将源值乘以所识别的转换系数,来扩充输入数据。
扩充后的源数据集¶
| Operand_Field | Column_1 | Column_2 | Unit_Measurement | Value Field |
|---|---|---|---|---|
| OPERAND_INPUT | North | Woman | m | 500 = (50*10) |
| OPERAND_INPUT | North | Men | km | 4 = (40*0.1) |
| OPERAND_INPUT | Center | Woman | m | 700 = (70*10) |
| OPERAND_INPUT | Center | Men | 30 | |
| OPERAND_INPUT | South | Woman | km | 5.5 = (55*0.1) |
| OPERAND_INPUT | South | Men | m | 350 = (35*10) |
| OPERAND_INPUT | East | Rather not say | dm | 90 = (9*10) |
| OPERAND_INPUT | East | Rather not say | dm | 1000 = (10*100) |
| OPERAND_INPUT | East | Rather not say | dm | 1000 = (10*100) |
计算 Operand_output¶
系统将值复制到输出,然后按 "GENDER" 逻辑维度对具有相同值的行进行分组。
目标数据集¶
| Operand_Field | Column_1 | Value Field |
|---|---|---|
| OPERAND_OUTPUT | Woman | 125.5 = (500+700+5.5) |
| OPERAND_OUTPUT | Men | 384 = (4+30+350) |
| OPERAND_OUTPUT | Rather not say | 12090 = (90+1000+11000) |