1. 作用
函式計算格式 已經說明在 FineBI 中使用函式的計算組成以及基礎的計算文法,但有時使用者也會遇到書寫公式報錯的問題,可根據提示完成公式的正確書寫。
本文將詳細介紹運算子和表式的文法,幫助使用者瞭解 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. 具體函式型別不合法提示
4.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不符合(任意型別,任意型別,任意型別,[數值])的參數要求 |
4.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不符合(數值/正文,數值/正文,數值/正文) 的參數要求 注:實時資料不支援該函式。 |
4.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 |
4.4 邏輯函式
函式 | 結果型別 | 不合法提示 |
---|---|---|
AND | bool | AND的參數型別必須為布林型別或數值型別 |
OR | bool | OR的參數型別必須為布林型別為bool型別或數值型別 |
IF | 第一個為 bool 型別或數值型別(0或者1),第二個和第三個參數相同型別,兩個參數中有空,傳回非空參數型別;兩個參數型別不同:傳回正文型別。 | IF:表式的第一個參數不符合布林型別或數值型別" 注:實時資料中表式的結果型別必須相同。 |
SWITCH | 傳回結果參數中第一個非空的參數型別(switch函式,第2n 1個參數是傳回參數n>0) | 抽取資料:SWITCH:的參數至少3個 實時資料:SWITCH:表式的結果型別必須相同 SWITCH:的參數至少3個 |
||、 | bool | #符號#只能連結兩個布林型別或數值型別的表式 |
4.5 其他函式
函式 | 結果型別 | 不合法提示 |
---|---|---|
ISNULL | bool | 實時資料:ISNULL不符合(任意型別)的參數要求 抽取資料:ISNULL:不符合(任意型別...) 的參數要求 |
NVL | 排除空(null) ,如果其他傳回結果參數的型別相同,則傳回結果參數中第一個非空且非空字串 的參數型別(NVL函式,所有參數都是傳回參數) | NVL不符合所有參數為相同型別的要求 |
4.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(欄位))) | #函式名#聚合函式不能巢聚合函式 |
4.7 快速計算函式
函式 | 結果型別 | 不合法提示 |
---|---|---|
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(合同金額)(「合同金額」為欄位) | #函式名#中參數只有是聚合函式或者常數,且第一個參數必須為聚合函式 |
4.8 控制計算粒度函式
函式 | 結果型別 | 不合法提示 |
---|---|---|
FIXED | 數值 | #函式名#必須包含參數 #函式名#維度不能為聚合函式 #函式名#最後一個參數必須是聚合函式 |
INCLUDE | ||
EXCLUDE |