函式計算格式 已經說明在 FineBI 中使用函式的計算組成以及基礎的計算文法,但有時使用者也會遇到書寫公式報錯的問題,可根據提示完成公式的正確書寫。
本文將詳細介紹運算子和表式的文法,幫助使用者瞭解 FineBI 的公式校驗方案,正確有效的寫出需要的函式。
參數中存在正文欄位,結果為正文欄位
日期 數值則為日期欄位
如果全是數值則為數值欄位
不合法提示:「不支援日期+日期操作」,如下圖所示:
兩個數值型別或者兩個日期型別欄位
注:不支援數值欄位-日期欄位。
日期型別-日期型別傳回結果為時間戳
日期型別-數值型別 傳回結果為日期型別
其餘傳回結果為數值型別
不合法提示:
「不支援數值-日期操作」,如下圖所示:
其他非法的減法:「文字不能作為減數或被減數」,如下圖所示:
2.3 /
兩個數值型別參數
數值型別
不合法提示:「/:操作符兩端必須為數值型別」,如下圖所示:
* 運算子表示數值相乘
% 運算子傳回除法運算的餘數
^ 乘方計算數位的指定次冪
不合法提示:「*:操作符兩端必須為數值型別」,如下圖所示:
2.5 >,<,<=,>= (比較)
>(大於)
<(小於)
>=(大於或等於)
<=(小於或等於)
兩個相同型別參數
布林型別
不合法提示:「>=:操作符兩端欄位型別必須相同」,如下圖所示:
== 或 =(等於)
!= (不等於)
或者參數中有 null
不合法提示:「!=:操作符兩端欄位型別必須相同」,如下圖所示:
FineBI 的函式表式寫法參見:表式文法
當使用者使用以下書寫方式時,會出現報錯提示。
例如使用者書寫如下的表式:ABS(合同金額)+ ,則會報錯「語法錯誤,缺少標示符」:
例如需要新增一欄,該列全部指派為 1,此時輸入 "1,由於缺少一半英文雙引號,會出現如下報錯「字元錯誤」:
3.3 文法錯誤
即其他的文法錯誤。
LEN
數值
LEN不符合 (任意型別) 的參數要求
CHAR
正文
CHAR不符合 (數值) 的參數要求
CODE
CODE不符合 (正文) 的參數要求
REPLACE
REPLACE不符合 (任意型別,任意型別,任意型別) 或 (任意型別,數值,數值,任意型別) 的參數要求
STARTWITH
bool
STARTWITH不符合 (任意型別,任意型別) 的參數要求
ENDWITH
ENDWITH不符合 (任意型別,任意型別) 的參數要求
EXACT
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不符合 (任意型別,任意型別) 或 (任意型別,任意型別,數值) 的參數要求
不符合(日期/正文,數值)的參數要求
不符合(日期/正文)的參數要求
實時資料:不符合(日期/正文)的參數要求
抽取資料:不符合(任意型別...)的參數要求
#函式名#不符合() 或 (日期/正文)的參數要求
實時資料:TIME:不符合(數值,數值,數值)的參數要求
抽取資料:TIME不符合(數值/正文,數值/正文,數值/正文)的參數要求
TODATE
實時資料:TODATE不符合(任意型別) 或 (正文,正文)的參數要求
抽取資料:TODATE:不符合(數值/日期/正文) 或 (正文,正文)或(正文,正文,正文)的參數要求
DAYS360:不符合(日期/正文,日期/正文,正文/數值)的參數要求
注:實時資料不支援該函式。
LUNAR不符合(數值/正文,數值/正文,數值/正文) 的參數要求
實時資料:不符合(數值)的參數要求
抽取資料:不符合(正文/數值)的參數要求
#函式名#不符合(數值)的參數要求
實時資料:不符合所有參數為相同型別的要求
抽取資料:不符合(數值...)的參數要求
#函式名#不符合(數值,數值)的參數要求
第一個為 bool 型別或數值型別(0或者1),第二個和第三個參數相同型別,兩個參數中有空,傳回非空參數型別;兩個參數型別不同:傳回正文型別。
IF:表式的第一個參數不符合布林型別或數值型別"IF:不符合(布爾/數值,參數,參數)的參數要求
注:實時資料中表式的結果型別必須相同。
抽取資料:SWITCH:的參數至少3個
實時資料:SWITCH:表式的結果型別必須相同
SWITCH:的參數至少3個
#符號#只能連結兩個布林型別或數值型別的表式
實時資料:ISNULL不符合(任意型別)的參數要求
抽取資料:ISNULL:不符合(任意型別...) 的參數要求
排除空(null) ,如果其他傳回結果參數的型別相同,則傳回結果參數中第一個非空且非空字串 的參數型別(NVL函式,所有參數都是傳回參數)
#函式名#不符合 (數值) 的參數要求
PERCENTILE_AGG
注:僅實時資料支援。
PERCENTILE_AGG不符合 (數值,數值) 的參數要求
PERCENTILE_AGG第二個常數數值型別參數必須在0到1之間
同參數型別
#函式名#不符合 (任意型別) 的參數要求
APPROX_COUNT_AGG
聚合函式組合場景下的不合法報錯:
錯誤代碼
含義
舉例
61500002
61500003
61500004
SAME_PERIOD
SAME_PERIOD不符合(數值) 或 (數值,正文) 的參數要求
SAME_PERIOD第二個常數正文型別參數必須為"Y","M","W"(不區分大小寫)
ACC_SUM不符合(數值) 或 (數值,數值) 的參數要求
ACC_SUM第二個常數數值型別參數必須為0,1
PERIOD_ANLS不符合(數值) 或 (數值,正文) 的參數要求
PERIOD_ANLS第二個常數正文型別參數必須為Y","M","W"(不區分大小寫)
PERIOD_TD不符合(數值) 或 (數值,正文) 的參數要求
PERIOD_TD第二個常數正文型別參數必須為Y","M","W"(不區分大小寫)
RANK_ANLS不符合(數值) 或 (數值,數值) 或 (數值,正文) 或 (數值,數值,正文)的參數要求
RANK_ANLS第二個常數數值型別參數必須為0,1
RANK_ANLS第三個常數正文型別參數必須為"asc","desc"(不區分大小寫)
TOTAL不符合(數值) 或 (數值,數值) 或 (數值,正文) 或 (數值,數值,正文)的參數要求
TOTAL第二個數值型別參數必須為0,1
TOTAL第三個常數正文型別參數必須為"sum","avg","min","max"(不區分大小寫)
通用報錯提示:
參數中包含非聚合函式或者常數,或者第一個參數不是聚合函式
FIXED
#函式名#必須包含參數
#函式名#維度不能為聚合函式
#函式名#最後一個參數必須是聚合函式
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙