界面说明如下:
设置项及分区 | 说明 |
---|---|
名称 | 计算字段的名称。 |
数据类型 | 计算字段的数据类型。 |
可选字段 | 可选择的数据字段资源树,字段通过拖拽到“表达式区域”。 |
表达式区域 | 用于编辑计算字段表达式。 |
常用函数 | 基于SQL92为标准,封装一套Smartbi自身的函数语法,用于适配Smartbi所支持的所有数据库,不包括“Teradata_v12”和“aliyun AnalyticDB”这两个数据库。 计算字段可选的常用函数:分为“字符串”、“时间日期”、“数值”和“系统”。
|
校验 | 校验输入的函数是否在提供的函数列表中。 在编辑表达式过程中,可通过点击 校验 按钮,校验输入的函数是否在提供的函数列表中。 |
取消/确定 | 如果表达式不在函数列表中,点击 确定 按钮,弹出提示框,提示该函数不是标准函数库语法,在其他数据库可能无法使用。 |
注意 |
---|
1、对于ClickHouse数据库,用该自助数据集创建自助仪表盘时,对于一个组件要求:设置了聚合方式的字段与用该字段创建的计算字段不能同时使用。1、对于HadoopHive数据库,用该自助数据集创建透视分析时,要求透视分析只能使用一个包含getdate函数的计算字段。 2、对于HadoopHive数据库,用该自助数据集创建透视分析时,要求透视分析只能使用一个包含getdate函数的计算字段。 3、在创建计算字段时使用了getdate函数,且数据类型选择为“TIME”类型,不支持应用于透视分析和电子表格,原因为:元数据是DATE类型,不支持转换为TIME类型。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,为负时返回-1 | sign(-32)返回-1 | |
sum | sum函数用来计算一个字段各个记录的总和 | 返回各个记录的总和 | |
系统 | getDate | getDate()返回系统当前时间 | 返回系统当前时间 |
nullif | nullif(expression1 ,expression2)判断表达式expression1和expression2是否相等,相等返回null否则返回第一个参数 | nullif(a,b),在a和b不相等时返回a |