[{"id":"840f0737-df1d-47ae-bb0a-359b01fe0608","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"d5d9cdef-8854-4505-89be-a2bbc3cb4482","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"3dc3dd55-35b0-4d23-bf62-47bc3650e4ee","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"80d84fbc-d0f8-4e4a-947f-e3e4de9b49b2","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"9152b7ca-0186-4fe3-a26f-5a05f322db07","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]}]
        
(Showing Draft Content)

自定义计算字段

自定义字段可以在不影响原数据的情况下通过对现有数据进行计算而得到一个新的数据字段。

计算字段是在数据集基础上使用 VB 函数进行的数据运算,需要遵循 VB 表达式的语法规则,且支持跨源。

type=info

提示

只有在“详情”视图模式下,才可以添加自定义字段。

添加计算字段

1. 在字段所在行单击image2018-6-7_17-12-31.png,选择添加计算字段(截图以直连数据集为例)。

image

type=info

缓存数据集中支持添加度量值和计算列,详见添加度量值和计算列

2. 在弹出的计算字段配置对话框中输入新添加的字段名称;双击字段名将其添加到表达式再添加具体函数完成表达式的书写;最后按需选择保存并继续创建或直接保存

您可以在表达式中添加使用函数:包括数学、日期时间、文本、混合、类型转换、流程、检测、财务中的函数。具体使用方法可选择函数可进行查看。

image

type=info

提示

在表达式中,可以使用@符号引用数据集中的查询参数。如需使用之前未定义过的查询参数,则先在表达式中书写,如“@P1”,然后单击右下方的“参数”按钮快速添加参数。

image

3. 预览。

勾选产品单价和折扣作为输出字段,单击页面上方的预览按钮,效果如下。

image2020-10-16_15-11-58.png

工作原理

在一个数据集被运算时,表引用和连接关系会被先行处理并得到一张新的结果表的定义,紧接着计算字段和普通的输出字段会一起被编译,最终得到一个内存中的函数树。

在需要访问数据时执行此函数树可以逐行得到最终的结果集。

这解释了为什么计算字段能够跨越数据源和数据表对普通的字段进行引用,此能力也正是计算字段的最大价值所在。

应用场景

生成新字段方便在数据集过滤器进行后续引用

数据集过滤器本身形式很固定,形如 {字段} {比较符} {值},但它能够引用计算字段故而能够提供无限可能来满足您的设计需求。

生成新字段作为其他计算字段的组成部分

计算字段可以引用其他计算字段

在复杂的设计中将一个复杂的计算字段拆解为几个计算字段能够减少设计难度。

有时也会出现 A 和 B 字段都引用 C 字段的情形。

使用WynSql函数库自由的定义新字段

构建计算字段时,语法是遵循 WynSql 中的表达式语法的。计算字段可以使用 WynSql 的任意函数,也可以引用数据集查询参数。

WynSql 提供了包括常用 VB 函数在内的上百个函数,能够实现绝大部分需求。

例如,原生列 [姓] 和 [名] 的值有可能为空,我们希望基于它建立新的计算字段,如果两个值都不为空则拼接它们,否则值为字符串“未知”,可以这样填写表达式:

IIF(IsNull(姓) OR IsNull(名) , '未知', 姓 + 名)

注意事项

  • 计算字段表达式中不能使用如 SUM、AVG一类的聚合函数;

  • 错误的引用关系仅会在预览和保存数据集时被检测出来,如循环引用(A和B各自引用了对方)和无效引用(被引用的原始字段被声明为‘不输出’或修改了输出的别名);

  • 如果被引用的来自源表的字段被设置了别名,计算字段引用其时必须使用别名而非原始名,否则会被认定是无效引用。