1. 功能说明
用户需要经常使用函数进行计算,因此正确有效的函数写法就显得非常重要。本文介绍观远BI函数的组成和正确写法格式。
2. 应用场景
| 使用位置 |
ETL | 添加计算列、SQL节点 |
数据集 | 模型结构、新建计算字段、行列权限 |
卡片 | 新建计算字段 |
3. 函数组成
函数表达式可以由五个要素组成:
序号 | 要素 | 说明 |
1 | 函数 | 用于对字段中的值或常量进行转换的语句 |
2 | 字段 | 数据表中的字段名 |
3 | 运算符 | 指明运算的符号 |
4 | 文本表达式 | 按照写入内容表示的常量值 |
5 | 全局参数 | 引用动态参数 |
示例:
4. 使用说明
内容
| 示例 | 使用说明 |
函数 | DATEDIFF; case when ...end | 左侧函数栏仅列出部分常用Spark函数,并非全部可用函数; 支持从函数栏选择和手动输入Spark函数,不区分大小写,左侧函数列表里的函数在编辑框里显示为红色; 支持在计算中组合、嵌套使用多个函数; 直连数据库需使用对应数据库的SQL语法,部分数据库函数需区分大小写。 |
字段 | [销售数量] input1.`StatusID` | 从左侧字段框中选择字段,系统自动加上 [] 标注字段名,展示为蓝色;SQL算子中,选择字段后自动添加表名和反引号(`)来标注字段名,显示为黑色。 不建议手动输入字段名,以防出现输入错误。 |
运算符 | = | 详情参见:计算运算符和优先级 |
文本表达式 | 字符串文本:'待处理'、'处理中' 等 数值文本:0 、 6 等 | 字符串需放在成对的半角单引号(')或双引号(")中间,展示为绿色; 数值展示为紫色。 |
全局参数 | [DYNAMIC_PARAMS.查询日期] | 从参数列表里选择参数,展示为蓝色;非全部场景可用,使用场景请参考 全局参数 |
注意:并非所有计算都需要包含所有五个要素,具体由函数用法决定;函数语法里需要使用到的标点符号需要是半角符号。
5. 操作步骤
6. 注意事项
6.1. 添加计算列、新建计算字段
手动选择输出的字段类型,只有选择和函数返回结果一致的类型,后续才能正常参与计算。
✅正确示范:
DATEDIFF([DYNAMIC_PARAMS.查询日期],[日期])
计算的2个日期之间的间隔天数,返回的是整数,那么应该选择“数值”;
DATEDIFF([DYNAMIC_PARAMS.查询日期],[日期]) between 0 and 6
是判断间隔天数是否大于等于0且小于等于6,返回结果应该是true/false, 那么类型就是“布尔型”。
❌错误示范:
示例一:substr() 用途是文本截取,返回的都是文本string,强行设定为“日期”类型,以后用该字段联动日期筛选器或者计算同环比时都容易出问题;
示例二:返回的结果字段 [销售金额] 是数值类型,但是 '0' 有一对单引号,是文本,那么返回的数据里数值和文本混在一起,系统会统一处理成文本类型,手动选择为“数值”,后续会无法进行聚合计算(例如求和)。
修改方案:(非唯一方案)
6.2. ETL-SQL算子
- SQL算子不需要手动设置字段类型,系统会根据函数和返回的数据自动判断字段类型;
- 建议对使用函数新建的的字段重命名,引用或重命名字段时,若包含特殊字符或中文字符,需用反引号("`")标注该字段名。例如
SELECT `地区`, `门店`, SUM(`成本`) AS `总成本` FROM input1 GROUP BY 1,2
。