页面树结构
转至元数据结尾
转至元数据起始


计算字段是指使用已经存在的字段,通过四则运算、函数等书写表达式形成的新字段。

用户在创建报表时,有时通过现有数据字段不能完全满足数据分析的要求,因此就需要通过计算字段的方式来解决。

操作步骤

1.创建一个数据集,在“表属性区”的任意位置或字段的右键菜单中选择 新建计算字段

2.在弹出的界面中进行设置。

界面说明如下:

设置项及分区说明
名称计算字段的名称。
数据类型计算字段的数据类型。
可选字段可选择的数据字段资源树,字段通过拖拽到“表达式区域”。
表达式区域用于编辑计算字段表达式。
常用函数

基于SQL92为标准,封装一套Smartbi自身的函数语法,用于适配Smartbi所支持的所有数据库,不包括“Teradata_v12”和“aliyun AnalyticDB”这两个数据库。

计算字段可选的常用函数:分为“字符串”、“时间日期”、“数值”和“系统”。

  • 字符串函数:lower、max、min、replace、substring、upper。
  • 时间函数:day、month、year。
  • 数值函数:abs、avg、ceiling、count、floor、max、min、round、sign、sum。
  • 系统函数:getdate、nullif。
校验

校验输入的函数是否在提供的函数列表中。

在编辑表达式过程中,可通过点击 校验 按钮,校验输入的函数是否在提供的函数列表中。

取消/确定

如果表达式不在函数列表中,点击 确定 按钮,弹出提示框,提示该函数不是标准函数库语法,在其他数据库可能无法使用。

1、对于HadoopHive数据库,用该自助数据集创建透视分析时,要求透视分析只能使用一个包含getdate函数的计算字段。

2、在创建计算字段时使用了getdate函数,且数据类型选择为“TIME”类型,不支持应用于透视分析和电子表格,原因为:元数据是DATE类型,不支持转换为TIME类型。

以“销售额”为例,新建“销售额”计算字段,“销售额”的表达式为:销售额=单价*数量*(1-折扣),数据类型为“DOUBLE" 。

编辑表达式时,双击字段或将字段直接拖入表达式区域即可,点击 确定 保存当前计算字段,如下图:

3.在“表属性区”可以看到生成的计算字段“销售额”。

右键“销售额”选择 编辑计算字段,可以对该计算字段进行编辑。

4.新建自助仪表盘时,在左侧度量区中就可以看到以上创建的计算字段“销售额”。

计算字段函数

我们基于SQL92为标准,封装一套Smartbi自身的函数语法,用于适配Smartbi所支持的数据库,暂不包括“Teradata_v12”和“aliyun AnalyticDB”这两个数据库。

函数具体如下:

函数类型函数说明示例
字符串




lower返回字符串s转换为全部字母小写后的值lower('QUADRATICALLY') 返回quadratically
max
返回field字段中的最大值。max(c1),返回c1字段中的最大值
min
返回field字段中的最小值min(c1),返回c1字段中的最小值
replace
函数返回被替换了指定子串的字符串。
replace('abcdef', 'a', 'b') 返回bbcdef
substring
截取字符串从n1开始的n2个字符substring('abcdef', 2, 4)返回bcde
upper
返回字符串s转换为全部字母大写后的值
upper('Allah-hus-samad') 返回ALLAH-HUS-SAMAD
时间日期

day
day()返回时间字段的天值orderDate:2010-11-10 day(orderDate)返回10
month
month()返回时间字段的月值orderDate:2010-11-10 month(orderDate)返回11
year
year()返回时间字段的年值orderDate:2010-11-10 year(orderDate)返回2010
数值








abs
返回数字n的绝对值abs(-2) 返回 2
avg
avg函数用来计算一个字段各个记录的平均值
返回各个记录的平均值
ceiling
返回大于或等于数字n的最小整数ceiling(2345.67) 返回 2346
count
count()函数允许您对表中符合特定条件的所有行进行计数返回表中的行数
floor
返回小于或等于数字n的最大整数floor(2345.67) 返回 2345
max
返回field字段中的最大值max(c1),返回c1字段中的最大值
min
返回field字段中的最小值min(c1),返回c1字段中的最小值
round
round(n1 [,n2])返回n1按照n2精度进行四舍五入后的值。n2不填写时,等同于round(n1,0)。 round(55.567, 2) 返回55.57
sign
返回数字的正负号,为正时返回1,为零时返回0,为负时返回-1sign(-32)返回-1
sum
sum函数用来计算一个字段各个记录的总和返回各个记录的总和
系统
getDate
getDate()返回系统当前时间返回系统当前时间
nullif
nullif(expression1 ,expression2)判断表达式expression1和expression2是否相等,相等返回null否则返回第一个参数
nullif(a,b),在a和b不相等时返回a
  • 无标签