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

目录:

作用编辑

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

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

运算符语法编辑

+

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

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

日期+数值则为日期字段

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

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

-

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

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

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

返回结果类型

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

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

其余返回结果为数值类型

不合法提示:

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

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

/

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

两个数值类型参数

返回结果类型

数值类型

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

*,%,^

概念

* 运算符表示数值相乘

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

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

支持组合类型

两个数值类型参数

返回结果类型

数值类型

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

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

概念

>(大于)

<(小于)

>=(大于或等于)

<=(小于或等于)

支持组合类型

两个相同类型参数

返回结果类型

布尔类型

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

=,!=,== (比较)

概念

== 或 =(等于)

!= (不等于)

支持组合类型

两个相同类型参数

或者参数中有 null

返回结果类型

布尔类型

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

表达式语法编辑

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

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

运算符表达式不完整

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

字符错误

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

语法错误

即其他的语法错误。

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

文本函数

函数 
结果类型
不合法提示

LEN

数值

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

CHAR

文本

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

CODE

数值

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

REPLACE

文本

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

文本

CONCATENATE:不符合(任意类型...)的参数要求

MID

文本

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

REGEXP

BOOL

实时数据:REGEXP不符合 (文本,文本) 的参数要求

抽取数据:REGEXP:不符合(文本,文本) 或 (文本,文本,数值) 的参数要求

FORMAT

文本

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

抽取数据:FORMAT不符合 (任意类型,文本) 的参数要求

FIND

数值

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

NUMTO文本
NUMTO不符合 (数值)或(数值,布尔)的参数要求
PROPER文本
PROPER:不符合(文本)的参数要求
SPLIT文本SPLIT不符合(任意类型,任意类型)的参数要求
SUBSTITUTE文本SUNSTITUTE不符合(任意类型,任意类型,任意类型,[数值])的参数要求

日期函数

函数 结果类型不合法提示
DATE日期DATE不符合(数值,数值,数值)的参数要求
DATEDELTA日期





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

MONTHDELTA时间
YEARDELTA日期
DATEDIF数值DATEDIF不符合(日期/文本,日期/文本,文本)的参数要求
DATESUBDATE数值DATESUBDATE不符合(日期/文本,日期/文本,文本)的参数要求
DATETONUMBER数值DATETONUMBER不符合(日期/文本)的参数要求
DAYVALUE数值DAYVALUE不符合(日期/文本)的参数要求
DAYSOFMONTH数值


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

DAYSOFQUARTER数值
DAYSOFYEAR数值

实时数据:不符合(日期/文本)的参数要求

抽取数据:不符合(任意类型...)的参数要求

YEAR数值





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

WEEK数值
DAY数值
HOUR数值
MINUTE数值
MONTH数值
SECOND数值
TIME时间

实时数据:TIME:不符合(数值,数值,数值)的参数要求

抽取数据:TIME不符合(数值/文本,数值/文本,数值/文本)的参数要求

TODATE

时间

实时数据:TODATE不符合(任意类型) 或 (文本,文本)的参数要求

抽取数据:TODATE:不符合(数值/日期/文本) 或 (文本,文本)或(文本,文本,文本)的参数要求

NOW时间NOW不符合()的参数要求
TODAY时间
TODAY不符合()的参数要求
WEEKDATE时间WEEKDATE不符合(数值,数值,数值,数值)的参数要求
WEEKDAY数值WEEKDAY不符合(日期/文本)的参数要求
DAYS360数值

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

注:实时数据不支持该函数。

LUNAR文本

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

注:实时数据不支持该函数。

数学和三角函数

函数 / 公式名返回类型公式不合法提示
PI数值PI不符合(数值)或()的参数要求
INT数值

实时数据:不符合(数值)的参数要求

抽取数据:不符合(文本/数值)的参数要求

CEILING










数值










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

Floor
SQRT
LN
SQRT
ABS
ACOS
ASIN
ATAN
LOG10
SIN
TAN
COS
EXP
DEGREES
SIGN
RADIANS
RAND数值RAND不符合()的参数要求
MIN任意类型

实时数据:不符合所有参数为相同类型的要求

抽取数据:不符合(数值...)的参数要求

MAX
RANDBETWEEN




数值




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

MOD
POWER
ROUND
ATAN2
PROMOTION
LOG数值#函数名#不符合(数值,数值)或(数值)的参数要求
TRUNC

逻辑函数

函数 
结果类型
不合法提示
ANDboolAND的参数类型必须为布尔类型或数值类型
ORboolOR的参数类型必须为布尔类型为bool类型或数值类型
IF

第一个为 bool 类型或数值类型(0或者1),第二个和第三个参数相同类型,两个参数中有空,返回非空参数类型;两个参数类型不同:返回文本类型。

IF:表达式的第一个参数不符合布尔类型或数值类型"
IF:不符合(布尔/数值,参数,参数)的参数要求

注:实时数据中表达式的结果类型必须相同。


SWITCH返回结果参数中第一个非空的参数类型(switch函数,第2n+1个参数是返回参数n>0)

抽取数据:SWITCH:的参数至少3个

实时数据:SWITCH:表达式的结果类型必须相同

SWITCH:的参数至少3个

||、&&bool

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

其他函数

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

实时数据:ISNULL不符合(任意类型)的参数要求

抽取数据:ISNULL:不符合(任意类型...) 的参数要求

NVL

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

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

聚合函数

函数 / 公式名结果类型不合法提示
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(字段)))#函数名#聚合函数不能嵌套聚合函数

快速计算函数

函数结果类型不合法提示

SAME_PERIOD







数值

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

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

ACC_SUM

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

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

PREVIOUS_PERIODPREVIOUS_PERIOD不符合(数值) 的参数要求
PERIOD_ANLS

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

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

PERIOD_TD

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

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

RANK_ANLS

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

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

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

TOTAL

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

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

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

通用报错提示:

含义

举例

不合法提示

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

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

控制计算粒度函数

函数 结果类型不合法提示

FIXED





数值




#函数名#必须包含参数

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

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

INCLUDE
EXCLUDE