作用
函数计算格式 已经说明在 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 | 
逻辑函数
| 函数  | 结果类型 | 不合法提示 | 
|---|---|---|
| AND | bool | AND的参数类型必须为布尔类型或数值类型 | 
| OR | bool | OR的参数类型必须为布尔类型为bool类型或数值类型 | 
| IF | 第一个为 bool 类型或数值类型(0或者1),第二个和第三个参数相同类型,两个参数中有空,返回非空参数类型;两个参数类型不同:返回文本类型。 | IF:表达式的第一个参数不符合布尔类型或数值类型" 注:实时数据中表达式的结果类型必须相同。 | 
| SWITCH | 返回结果参数中第一个非空的参数类型(switch函数,第2n+1个参数是返回参数n>0) | 抽取数据:SWITCH:的参数至少3个 实时数据:SWITCH:表达式的结果类型必须相同 SWITCH:的参数至少3个 | 
| ||、&& | bool | #符号#只能连接两个布尔类型或数值类型的表达式 | 
其他函数
| 函数 | 结果类型 | 不合法提示 | 
|---|---|---|
| ISNULL | bool | 实时数据: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_PERIOD | PREVIOUS_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 | 

 
  
  	 
             
             
     上一篇:常用函数语法FAQ
上一篇:常用函数语法FAQ 
  
             
		         
					 
					 
						 
					 
					