1. 内容概述
自定义字段可以在不影响原数据的情况下通过对现有数据进行计算而得到一个新的数据字段。
计算字段是在数据集基础上使用VB函数进行的数据运算,需要遵循VB表达式的语法规则,且支持跨源。
2. 添加计算字段
(1) 在字段所在行单击,选择”添加计算字段“。
(2) 在弹出的计算字段配置对话框中输入新添加的字段名称;双击字段名将其添加到表达式再添加具体函数完成表达式的书写;最后按需选择“保存并继续创建”或直接“保存”。
您可以在表达式中添加使用函数:包括数学、日期时间、文本、混合、类型转换、流程、检测、财务中的函数。具体使用方法可选择函数可进行查看。
(3) 预览。
勾选产品单价和折扣作为输出字段,单击页面上方的预览按钮,效果如下。
3. 工作原理
在一个数据集被运算时,表引用和连接关系会被先行处理并得到一张新的结果表的定义,紧接着计算字段和普通的输出字段会一起被编译,最终得到一个内存中的函数树。
在需要访问数据时执行此函数树可以逐行得到最终的结果集。
这解释了为什么计算字段能够跨越数据源和数据表对普通的字段进行引用,此能力也正是计算字段的最大价值所在。
4. 应用场景
数据集过滤器本身形式很固定,形如 {字段} {比较符} {值},但它能够引用计算字段故而能够提供无限可能来满足您的设计需求。
计算字段可以引用其他计算字段
在复杂的设计中将一个复杂的计算字段拆解为几个计算字段能够减少设计难度。
有时也会出现A和B字段都引用C字段的情形。
构建计算字段时,语法是遵循WynSql中的表达式语法的。计算字段可以使用WynSql的任意函数,也可以引用数据集查询参数。
WynSql提供了包括常用VB函数在内的上百个函数,能够实现绝大部分需求。
例如,原生列 [姓] 和 [名] 的值有可能为空,我们希望基于它建立新的计算字段,如果两个值都不为空则拼接它们,否则值为字符串“未知”,可以这样填写表达式:
IIF(IsNull(姓) OR IsNull(名) , '未知', 姓 + 名)
5. 注意事项
- 计算字段表达式中不能使用如SUM、AVG一类的聚合函数;
- 错误的引用关系仅会在预览和保存数据集时被检测出来,如循环引用(A和B各自引用了对方)和无效引用(被引用的原始字段被声明为‘不输出’或修改了输出的别名);
- 如果被引用的来自源表的字段被设置了别名,计算字段引用其时必须使用别名而非原始名,否则会被认定是无效引用。