历史版本2 :运算符和不合法报错 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineBI 版本JAR 包功能变动
5.1.112021-04-01实时数据公式校验加强

1.2 应用场景

函数计算格式 已经说明在 FineBI 中使用函数的计算组成以及基础的计算语法,但有时用户也会遇到书写公式报错的问题,可根据提示完成公式的正确书写。

1.3 功能简介

本文将详细介绍运算符和表达式的语法,帮助用户了解 FineBI 的公式校验方案,正确有效的写出需要的函数。

2. 运算符语法编辑

2.1 +

概念
+ 运算符在应用于数字时表示相加,在应用于字符串时表示串联。
支持组合类型除日期字段+日期字段之外,支持其他任意类型组合
返回结果类型

参数中存在文本字段,结果为文本字段

日期+数值则为日期字段

如果全是数值则为数值字段

不合法提示:「不支持日期+日期操作」,如下图所示:

2.2 -

概念
- 运算符在应用于数字时表示相减,在应用于表达式时表示求反。
支持组合类型

两个数值类型或者两个日期类型字段

注:不支持数值字段-日期字段。

返回结果类型

日期类型-时期类型返回结果为时间戳

日期类型-数值类型 返回结果为日期类型

其余返回结果为数值类型

不合法提示:

  • 「不支持数值-日期操作」,如下图所示:

  • 其他非法的减法:「文本字段不能作为减数或被减数」,如下图所示:

2.3 /

概念
/ 运算符表示数值相除
支持组合类型

两个数值类型参数

返回结果类型

数值类型

不合法提示:「操作符两端必须为数值类型」,如下图所示:

2.4 *,%,^

概念

* 运算符表示数值相乘

% 运算符返回除法运算的余数

^ 乘方计算数字的指定次幂

支持组合类型

两个数值类型参数

返回结果类型

数值类型

不合法提示:「操作符两端必须为数值类型」,如下图所示:

2.5 >,<,<=,>= (比较)

概念

>(大于)

<(小于)

>=(大于或等于)

<=(小于或等于)

支持组合类型

两个相同类型参数

返回结果类型

布尔类型

不合法提示:「操作符两端字段类型必须相同」,如下图所示:

2.6 =,!=,== (比较)

概念

== 或 =(等于)

!= (不等于)

支持组合类型

两个相同类型参数

或者参数中有 null

返回结果类型

布尔类型

不合法提示:「操作符两端字段类型必须相同」,如下图所示:

3.  表达式语法编辑

FineBI 的函数表达式写法参见:表达式语法

当用户使用以下书写方式时,会出现报错提示。

3.1 运算符表达式不完整

例如用户书写如下的表达式:ABS(合同金额)+,则会报错「语法错误,缺少标示符」:

3.2 字符错误

例如需要新增一列,该列全部赋值为 1,此时输入 "1,由于缺少一半英文双引号,会出现如下报错「字符错误」:

3.3 语法错误

即其他的语法错误。

4. 具体函数类型不合法提示编辑

2.1 文本函数

函数 
合法性
结果类型
不合法提示

LEN

一个任意类型参数

数值

LEN不符合 (任意类型) 的参数要求

CHAR

一个数值类型参数

文本

CHAR不符合 (数值) 的参数要求

CODE

一个文本类型参数

数值

CODE不符合 (文本) 的参数要求

REPLACE

  1. 三个参数都是任意类型

  2. 四个参数,第一个是任意类型,第二个第三个是数值,第四个是任意类型

文本

REPLACE不符合 (任意类型,任意类型,任意类型) 或 (任意类型,数值,数值,任意类型) 的参数要求

STARTWITH

两个任意类型参数

bool

STARTWITH不符合 (任意类型,任意类型) 的参数要求

ENDWITH

两个任意类型参数

bool

ENDWITH不符合 (任意类型,任意类型) 的参数要求

EXACT

两个任意类型参数

bool

EXACT不符合 (任意类型,任意类型) 的参数要求

INDEXOF

两个参数,第一个为任意类型,第二个为数值

文本

INDEXOF不符合 (任意类型,数值) 的参数要求

REPEAT

两个参数,第一个为任意类型,第二个为数值

文本

REPEAT不符合 (任意类型,数值) 的参数要求

LEFT

两个参数,第一个为任意类型,第二个为数值,可缺省

文本

LEFT不符合(任意类型) 或 (任意类型,数值) 的参数要求

RIGHT

两个参数,第一个为任意类型,第二个为数值,可缺省

文本

RIGHT不符合(任意类型) 或 (任意类型,数值) 的参数要求

TODOUBLE

单任意类型参数

数值

TODOUBLE不符合 (任意类型) 的参数要求

TOINTEGER

单任意类型参数

数值

TOINTEGER不符合 (任意类型) 的参数要求

LOWER

单文本参数

文本

LOWER不符合 (文本) 的参数要求

TRIM

单文本参数

文本

TRIM不符合 (文本) 的参数要求

UPPER

单文本参数

文本

UPPER不符合 (文本) 的参数要求

CONCATENATE

多个任意类型参数

文本

--

MID

第一个参数为任意类型,第二个,第三个为数值

文本

MID不符合 (任意类型,数值,数值) 的参数要求

REGEXP

第一个参数为文本,二个个参数为文本

BOOL

REGEXP不符合 (文本,文本) 的参数要求

FORMAT

第一个参数为日期,第二个参数为文本

文本

FORMAT不符合 (日期,文本) 的参数要求

FIND

第一个参数任意类型

第二个参数任意类型

第三个缺省参数数值

数值

FIND不符合 (任意类型,任意类型) 或 (任意类型,任意类型,数值) 的参数要求

2.2 日期函数

函数 合法性结果类型不合法提示
DATE

三个数值参数

日期DATE不符合(数值,数值,数值)的参数要求
DATEDELTA

两个参数

第一个日期或文本类型参数

第二个参数为数值

日期





不符合(日期/文本,数值)的参数要求

MONTHDELTA

两个参数

第一个日期或文本类型参数

第二个参数为数值

时间
YEARDELTA

两个参数

第一个日期或文本类型参数

第二个参数为数值

日期
DATEDIF

三个参数

第一、二个日期或文本类型参数

第三个是文本

数值DATEDIF不符合(日期/文本,日期/文本,文本)的参数要求
DATESUBDATE

三个参数

第一,二个日期或文本类型参数

第三个是文本

数值DATESUBDATE不符合(日期/文本,日期/文本,文本)的参数要求
DATETONUMBER一个日期或文本类型参数数值DATETONUMBER不符合(日期/文本)的参数要求
DAYVALUE一个日期或文本类型参数数值DAYVALUE不符合(日期/文本)的参数要求
DAYSOFMONTH一个日期或文本类型参数数值


符合(日期/文本)的参数要求

DAYSOFQUARTER一个日期或文本类型参数数值
DAYSOFYEAR一个日期或文本类型参数数值
YEAR

一个缺省日期或文本类型参数

数值





#函数名#不符合() 或 (日期/文本)的参数要求

WEEK

一个缺省日期或文本类型参数

数值
DAY一个缺省日期或文本类型参数数值
HOUR一个缺省日期或文本类型参数数值
MINUTE一个缺省日期或文本类型参数数值
MONTH

一个缺省日期或文本类型参数

数值
SECOND

一个缺省日期或文本类型参数

数值
TIME

三个数值参数

时间

TODATE

  1. 单个参数,参数为数值或日期或者文本

  2. 两个参数全是文本类型

时间TODATE不符合(任意类型) 或 (文本,文本)的参数要求
NOW无参时间NOW不符合()的参数要求
TODAY无参
TODAY不符合()的参数要求
WEEKDATE四个数值参数时间WEEKDATE不符合(数值,数值,数值,数值)的参数要求
WEEKDAY

一个日期或文本类型参数

数值WEEKDAY不符合(日期/文本)的参数要求

2.3 数学和三角函数

函数 / 公式名合法性返回类型公式不合法提示
PI一个数值类型参数,可缺省数值PI不符合(数值)或()的参数要求
CEILING










单数值参数










数值










#函数名#不符合(数值)的参数要求

Floor
INT
SQRT
LN
SQRT
ABS
ACOS
ASIN
ATAN
LOG10
SIN
TAN
COS
EXP
DEGREES
SIGN
RADIANS
RAND无参数值RAND不符合()的参数要求
MIN大于0个数值参数任意类型#函数名# 不符合所有参数为相同类型的要求
MAX
RANDBETWEEN




两个数值参数




数值




#函数名#不符合(数值,数值)的参数要求

MOD
POWER
ROUND
ATAN2
PROMOTION
LOG

第一个参数数值,第二个缺省数值

数值#函数名#不符合(数值,数值)或(数值)的参数要求
TRUNC

2.4 逻辑函数


函数 
公式合法性
结果类型
不合法提示
AND参数为 bool 类型或数值类型boolAND的参数类型必须为布尔类型或数值类型
OR参数为 bool 类型或数值类型boolOR的参数类型必须为布尔类型为bool类型或数值类型
IF

三个参数,第二个和第三个参数相同类型,第一个为 bool 类型或数值类型

返回结果参数中第一个非空的参数类型(if,函数,第二个和第三个参数为非返回值参数)

IF表达式的第一个参数不符合布尔类型为bool类型或数值类型

IF表达式的结果类型必须相同


SWITCH

参数个数至少3个,且结果参数类型一致

返回结果参数中第一个非空的参数类型(switch函数,第2n+1个参数是返回参数n>0)SWITCH表达式中的结果类型必须相同
||、&&参数为bool类型或数值类型bool

#符号#只能连接两个布尔类型为bool类型或数值类型的表达式

2.5 其他函数

函数
合法性
结果类型
不合法提示
ISNULL单个任意类型参数boolISNULL不符合(任意类型)的参数要求
NVL大于0个参数需统一类型

排除空(null) ,如果其他返回结果参数的类型相同,则返回结果参数中第一个非空且非空字符串 的参数类型(NVL函数,所有参数都是返回参数)

NVL不符合所有参数为相同类型的要求

2.6 聚合函数

函数 / 公式名合法性结果类型不合法提示
SUM_AGG




单个数值类型参数





数值




#函数名#不符合 (数值) 的参数要求



AVG_AGG
VAR_AGG
MEDIAN_AGG
STDEV_AGG
PERCENTILE_AGG两个数值类型参数,第二个参数必须为常量数值

PERCENTILE_AGG不符合 (数值,数值) 的参数要求

PERCENTILE_AGG第二个常量数值类型参数必须在0到1之间

MAX_AGG

单个任意类型参数

同参数类型


#函数名#不符合 (任意类型) 的参数要求

MIN_AGG
APPROX_COUNT_AGG


单个任意类型参数


数值


#函数名#不符合 (任意类型) 的参数要求

COUNT_AGG
COUNTD_AGG

聚合函数组合场景下的不合法报错:

错误代码

含义

举例

不合法提示

61500002

明细过滤后的指标不符合聚合函数ABS(字段),字段进行了明细过滤#函数名#明细过滤后的指标仅支持聚合函数

61500003

无法将聚合参数和非聚合参数混合使用SUM_AGG(字段1)+字段2无法将聚合参数和非聚合参数混合使用

61500004

聚合函数不能嵌套聚合函数SUM_AGG(SUM_AGG(字段)))#函数名#聚合函数不能嵌套聚合函数

2.7 快速计算函数

函数合法性结果类型不合法提示

SAME_PERIOD

第一个参数为聚合函数

第二个为缺省文本参数,缺省值为"Y"







数值

SAME_PERIOD不符合(数值) 或 (数值,文本) 的参数要求

SAME_PERIOD第二个常量文本类型参数必须为"Y","M","W"(不区分大小写)

ACC_SUM

第一个参数为聚合函数

第二个为缺省数值参数,缺省值为0

ACC_SUM不符合(数值) 或 (数值,数值) 的参数要求

ACC_SUM第二个常量数值类型参数必须为0,1

PREVIOUS_PERIOD第一个参数为聚合函数PREVIOUS_PERIOD不符合(数值) 的参数要求
PERIOD_ANLS

第一个参数为聚合函数

第二个为缺省文本参数,缺省值为"Y"

PERIOD_ANLS不符合(数值) 或 (数值,文本) 的参数要求

PERIOD_ANLS第二个常量文本类型参数必须为Y","M","W"(不区分大小写)

PERIOD_TD

第一个参数为聚合函数

第二个为缺省文本参数,缺省值为"Y"

PERIOD_TD不符合(数值) 或 (数值,文本) 的参数要求

PERIOD_TD第二个常量文本类型参数必须为Y","M","W"(不区分大小写)

RANK_ANLS

第一个参数为聚合函数

第二个为缺省数值参数,缺省值为0

第三个为缺省文本参数,缺省值为"desc"

RANK_ANLS不符合(数值) 或 (数值,数值) 或 (数值,文本) 或 (数值,数值,文本)的参数要求

RANK_ANLS第二个常量数值类型参数必须为0,1

RANK_ANLS第三个常量文本类型参数必须为"asc","desc"(不区分大小写)

TOTAL

第一个参数为聚合函数

第二个为缺省数值参数,缺省值为0

第三个为缺省文本参数,缺省值为"sum"

TOTAL不符合(数值) 或 (数值,数值) 或 (数值,文本) 或 (数值,数值,文本)的参数要求

TOTAL第二个数值类型参数必须为0,1

TOTAL第三个常量文本类型参数必须为"sum","avg","min","max"(不区分大小写)

通用报错提示:

含义

举例

不合法提示

参数中包含非聚合函数或者常量,或者第一个参数不是聚合函数

TOTAL(合同金额)(「合同金额」为字段)#函数名#中参数只有是聚合函数或者常量,且第一个参数必须为聚合函数

2.8 控制计算粒度函数

函数 合法性结果类型不合法提示

FIXED

FIXED(dim1,dim2,……,aggregate)

dim为维度,可为任意类型,但不能为聚合函数

aggregate为结果,必须为聚合函数





数值




#函数名#必须包含参数

#函数名#维度不能为聚合函数

#函数名#最后一个参数必须是聚合函数

INCLUDE

INCLUDE(dim1,dim2,……,aggregate)

dim为维度,可为任意类型,但不能为聚合函数

aggregate为结果,必须为聚合函数

EXCLUDE

EXCLUDE(dim1,dim2,……,aggregate)

dim为维度,可为任意类型,但不能为聚合函数

aggregate为结果,必须为聚合函数