运算符和不合法报错

  • 文档创建者:Roxy
  • 编辑次数:9次
  • 最近更新:Roxy 于 2021-04-28
  • 1. 概述

    1.1 版本

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

    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

    文本

    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不符合(任意类型,任意类型,任意类型,[数值])的参数要求

    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时间

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

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

    TODATE

    时间

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

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

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

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

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

    LUNAR文本

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

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

    2.3 数学和三角函数

    函数 / 公式名返回类型公式不合法提示
    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

    2.4 逻辑函数

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

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

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

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


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

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

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

    SWITCH:的参数至少3个

    ||、&&bool

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

    2.5 其他函数

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

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

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

    NVL

    排除空(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







    数值

    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(合同金额)(「合同金额」为字段)#函数名#中参数只有是聚合函数或者常量,且第一个参数必须为聚合函数

    2.8 控制计算粒度函数

    函数 结果类型不合法提示

    FIXED





    数值




    #函数名#必须包含参数

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

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

    INCLUDE
    EXCLUDE




    附件列表


    主题: 数据分析进阶
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-127-81526