计算字段概述
计算字段可以方便用户做一些基础数据处理和转换。
点击数据可视化探索编辑器左侧区域“字段”旁边的下拉菜单图标,然后选择“创建计算字段”选项,弹出编辑框。输入字段名称和计算公式,然后保存即可。 其中名称不可以跟已有的字段名称重复。
计算字段编辑器分为三部分。
-
左侧字段列表。单击任一字段可以将字段名称添加到公式中。
-
中间计算字段编辑器,可以编辑计算字段名称和计算公式。
-
右侧为函数列表。可以查看各函数的介绍和示例,双击任一函数可以将函数名称添加到公式中。
对运算符的支持
按优先级由高到低排列:
运算符 | 描述 |
---|---|
() | 括号拥有最高的优先级 |
NOT | 逻辑取反 |
OR | 逻辑或 |
AND | 逻辑与 |
=,<,<=,>,>=,!= | 比较运算符 |
+,- | 数学运算符 |
*,/,% | 数学运算符 |
计算字段类型和错误提示
计算字段有四种类型:日期、数值、字符串、布尔值。 计算字段的类型会从用户输入的计算公式中自动推导出来,如果计算公式含有错误,则会将错误显示在计算字段编辑器的下方。用户修改公式和字段名称都会触发计算字段的错误检查功能,所以需要等待错误检查通过才能进行保存操作
计算字段嵌套
用户可以在一个计算字段中引用另一个计算字段,这样可以将复杂的计算公式拆分成多个小一些的计算字段,然后再拼装起来。
计算字段在使用上和普通字段一致,使用方括号包裹起来,如[计算字段1]
。
函数表达式
函数表达式是整个计算字段最基础的功能,我们提供的函数分为数字、字符串、日期、逻辑、类型转换、聚合和表计算等类型。通过这些函数的组合,可以实现丰富和强大的功能。
通过函数名称(参数列表)
的形式使用函数表达式,函数可以嵌套使用。
各函数的说明,请在计算字段编辑器中查看。
IF 表达式和 CASE 表达式
条件判断语句和分支语句是现代编程语言的基础功能,用于实现对数据的控制功能。
-
IF 表达式判断参数是否为真,若真则执行紧跟其后的分支,否则执行另外一个分支。 例如:
IF [销售额] > 1000 THEN ‘业绩良好’ ELSE ‘业绩不达标’ END
。使用形式:IF <布尔表达式> THEN <表达式> [ ELSEIF <布尔表达式> ] [ ELSE <表达式> ] END
注意这里的尖括号代表一个具体的表达式,方括号代表该语句可选。计算公式的类型由各<表达式>
的类型决定,各<表达式>
的类型要一致。比如上面的例子,’业绩良好’ 和 ’业绩不达标’ 都是字符串类型,所以计算 公式的类型是字符串,但是不能一个表达式是字符串,另一个是数字。 -
CASE 表达式的使用形式:
CASE <input*表达式> WHEN <when*表达式> THEN <result*表达式> […n] [ ELSE <result*表达式> ] END
注意这里的[…n]代表该行的表达式可以出现 1 到 n 次。 同 IF 一样,计算公式的类型由<result_表达式>
决定。CASE 语句可以方便比较多个分支,对于一些总类有限的数据的类型转换会很有帮助,列如:CASE [类别] WHEN ‘办公用品’ THEN 2 WHEN ‘技术’ THEN 1 ELSE 0 END。
字符串和日期的表示
字符串使用单引号或双引号包裹起来,如 ’优联博睿’ 或 ”优联博睿” ,日期使用#号包裹起来,如 #2018-12-21# 。 支持的日期格式有:
- yyyy-MM-dd HH:mm:ss,如:#2018-12-21 11:12:24#
- yyyy-MM-dd,如:#2018-12-21#
- HH:mm:ss,如:#11:12:24#
日期间隔类型 DATE_PART
在使用,DATEADD(日期加上一段时间)、DATEDIFF(日期相减)、DATEPART(提取日期的一部分,如年月日)等函数时,会使用到一个字符串常量,也就是 date_part,可使用的有效值为:
DATE_PART | 值 |
---|---|
‘year’ | 四位数年份 |
‘quarter’ | 季度,1-4 |
‘month’ | 月,1-12 |
‘week’ | 周,1-52 |
‘day ’ | 日,1-31 |
‘hour’ | 时,0-23 |
‘minute’ | 分,0-59 |
‘second’ | 秒,0-59 |
日期格式化参数
DATEFORMAT 函数能够格式化日期,要注意该函数返回的结果是字符串。其格式化字符串支持的模板参数有:
参数 | 说明 |
---|---|
yyyy | 4 位数年份,如 2018 |
yy | 2 位数年份,如 18 |
mm | 月,1-12 |
mon | 月,(January,December 等) |
dd | 天,1-31 |
hh | 时,12 小时制 |
hh24 | 时,24 小时制 |
mi | 分,0-59 |
ss | 秒,0-59 |
ww | 周,1-53 |
例:DATEFORMAT(#2018-12-22#,’ww’)
的结果为 51,即 2018-12-22 所在的周为本年第 51 周。
注意事项
- “+”运算符不能连接字符串,请使用 CONCAT 函数来连接字符串。
- 应避免两个计算字段互相引用。
- 布尔值有 true 和 false,注意是小写形式。
- 可以使用 null 表示空值。
- 函数名称不区分大小写,字段名称区分大小写。函数 RANK 和 rank 是同一个函数,但是 [sales] 和 [SALES] 不是同一个字段。
- 在使用 - 运算 符时,如果后面是数字,务必要使用空格隔开,否则将表示一个负数。
- 对于多表连接的字段,需要在字段名称后面加上表名,中间使用空格隔开,表名使用括号包围起来,如 [计算字段名称 (表名)]。