本文為您介紹實時計算Flink版支持的所有內置函數。
支持的函數
實時計算Flink版VVR 3.0.0版本在Flink V1.12的基礎上增加了部分內置函數,詳情請參見標量函數、表值函數和聚合函數。下表展示的是實時計算Flink版在Flink V1.15版本的基礎上支持的全部內置函數及簡要說明。
不同Flink版本支持的函數可能會有差異,如果您需要查看函數詳情及不同版本差異,請查看對應的文檔鏈接,詳情請參見Flink V1.12內置函數、Flink V1.13內置函數、Flink V1.14內置函數、Flink V1.15內置函數、Flink V1.16內置函數和Flink V1.17內置函數。
如果內置函數中不存在您所需的函數,您可以通過自定義函數實現,自定義函數詳情請參見自定義函數概述。
標量函數
類別 | 函數 | 說明 |
比較函數 | 如果value1等于value2返回true。 | |
如果value1不等于value2返回true。 | ||
如果value1大于value2返回true。 | ||
如果value1大于或等于value2返回true。 | ||
如果value1小于value2返回true。 | ||
如果value1小于等于value2返回true。 | ||
如果值為NULL返回true。 | ||
如果值不為NULL返回true。 | ||
value1和value2的數據類型和值不相同,則返回true。所有NULL值視為彼此相等。 | ||
value1和value2的數據類型和值相同,則返回true。所有NULL值視為彼此相等。 | ||
默認或使用ASYMMETRIC關鍵字的情況下,如果value1大于等于value2且小于等于value3返回true。 | ||
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | 默認或使用ASYMMETRIC關鍵字的情況下,如果value1小于value2或大于 value3,則返回true。 | |
如果string1匹配string2返回true。 | ||
如果string1與string2不匹配返回true。 | ||
如果string1匹配SQL正則表達式string2返回true。 | ||
如果string1與SQL正則表達式string2不匹配返回true。 | ||
在給定列表 (value2, value3, …) 中存在 value1返回true。 | ||
在給定列表 (value2, value3, …) 中不存在value1返回true。 | ||
如果子查詢至少返回一行則返回true。 | ||
如果value等于子查詢結果集中的一行則返回true。 | ||
如果value不包含于子查詢返回的行則返回true。 | ||
邏輯函數 | 使用BITAND函數進行按位與操作。 | |
使用BITNOT函數進行按位取反。 | ||
使用BITOR函數進行按位取或。 | ||
使用BITXOR函數進行按位取異或。 | ||
如果boolean1為true或boolean2為true返回true。 | ||
如果boolean1和boolean2都為true返回true。 | ||
如果布爾值為FALSE返回true;如果布爾值為true返回FALSE;如果布爾值為UNKNOWN返回UNKNOWN。 | ||
如果布爾值為FALSE返回true;如果 boolean為true或UNKNOWN返回FALSE。 | ||
如果boolean為true或UNKNOWN返回true;如果boolean為FALSE返回FALSE。 | ||
如果boolean為true返回true;如果 boolean為FALSE或UNKNOWN返回FALSE。 | ||
如果boolean為FALSE或UNKNOWN返回true;如果布爾值為true返回FALSE。 | ||
如果布爾值為UNKNOWN返回true;如果boolean為true或FALSE返回FALSE。 | ||
如果boolean為true或FALSE返回true;如果布爾值為UNKNOWN返回FALSE。 | ||
算術函數 | 返回numeric。 | |
返回numeric的相反數。 | ||
返回numeric1加numeric2。 | ||
返回numeric1減numeric2。 | ||
返回numeric1乘以numeric2。 | ||
返回numeric1除以numeric2。 | ||
返回numeric1除以numeric2的余數。 | ||
返回numeric1的numeric2次方。 | ||
返回numeric的絕對值。 | ||
返回numeric的平方根。 | ||
返回numeric的自然對數(以e為底)。 | ||
返回以10為底的numeric的對數。 | ||
返回以2為底的numeric的對數。 | ||
當用一個參數調用時,返回 numeric2 的自然對數。當使用兩個參數調用時,此函數返回 numeric2 以 numeric1 為底的對數。numeric2 必須大于 0,numeric1 必須大于 1。 | ||
返回e的numeric次冪。 | ||
向上取整,并返回大于或等于numeric的最小整數。 | ||
向下取整,并返回小于或等于numeric的最大整數。 | ||
返回numeric的正弦值。 | ||
返回numeric的雙曲正弦值。返回類型為 DOUBLE。 | ||
返回numeric的余弦值。 | ||
返回numeric的正切值。 | ||
返回numeric的雙曲正切值。返回類型為 DOUBLE。 | ||
返回numeric的余切值。 | ||
返回numeric的反正弦值。 | ||
返回numeric的反余弦值。 | ||
返回numeric的反正切值。 | ||
返回坐標 (numeric1, numeric2) 的反正切。 | ||
返回numeric的雙曲余弦值。返回值類型為DOUBLE。 | ||
返回弧度numeric的度數表示。 | ||
返回度數numeric的弧度表示。 | ||
返回numeric的符號。 | ||
返回numeric四舍五入保留INT小數位的值。 | ||
返回無比接近pi的值。 | ||
返回無比接近e的值。 | ||
返回[0.0, 1.0) 范圍內的偽隨機雙精度值。 | ||
返回范圍為[0.0, 1.0) 的偽隨機雙精度值,初始種子為INT。 | ||
返回[0, INT) 范圍內的偽隨機整數。 | ||
返回范圍為[0, INT2) 的偽隨機整數,初始種子為INT1。 | ||
根據RFC 4122 類型 4(偽隨機生成)UUID,返回UUID(通用唯一標識符)字符串。 | ||
以二進制格式返回INTEGER的字符串表示形式。 | ||
以十六進制格式返回整數numeric值或 STRING的字符串表示形式。 | ||
返回截取integer2位小數的數字。 | ||
返回expr的percentage百分位值。 | ||
字符串函數 | 返回STRING1和STRING2的連接。 | |
返回字符串中的字符數。 | ||
以大寫形式返回字符串。 | ||
以小寫形式返回字符串。 | ||
返回 STRING2 中第一次出現STRING1的位置(從 1 開始);如果在STRING2中找不到STRING1返回 0。 | ||
返回從STRING2中刪除以字符串STRING1開頭、結尾或開頭且結尾的字符串的結果。 處理TRAILING參數時,會移除字符串末尾的所有字符,直到遇到一個不在TRAILING參數中的字符為止。例如,TRIM(TRAILING 'fe' from 'abcdef')返回abcd。 | ||
返回從STRING中刪除左邊空格的字符串。 | ||
返回從STRING中刪除右邊空格的字符串。 | ||
返回INT個string連接的字符串。 | ||
使用REGEXP_REPLACE函數,用目標字符串替換指定字符串,并返回新的字符串。 | ||
OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) | 返回一個字符串,該字符串從位置INT1用 STRING2替換STRING1的INT2(默認為 STRING2的長度)字符。 | |
返回STRING從位置INT1開始,長度為INT2(默認到結尾)的子字符串。 | ||
返回一個新字符串,它用STRING1中的 STRING3(非重疊)替換所有出現的 STRING2。 | ||
將字符串STRING1按照STRING2正則表達式的規則拆分,返回指定INTEGER1處位置的字符串。 | ||
返回新形式的 STRING,其中每個單詞的第一個字符轉換為大寫,其余字符轉換為小寫。這里的單詞表示字母數字的字符序列。 | ||
返回連接string1,string2, … 的字符串。如果有任一參數為NULL,則返回NULL。 | ||
返回將STRING2,STRING3, … 與分隔符 STRING1連接起來的字符串。 | ||
返回從string1靠左填充string2到INT長度的新字符串。 | ||
返回從string1靠右邊填充string2到INT長度的新字符串。 | ||
返回字符串string1的base64解碼的結果。 | ||
返回字符串string的base64編碼的結果。 | ||
返回字符串string第一個字符的數值。 | ||
返回二進制等于integer的ASCII字符。 | ||
使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)解碼。 | ||
使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)編碼。 | ||
返回string2在 string1中第一次出現的位置。 | ||
返回字符串中最左邊的長度為integer值的字符串。 | ||
返回字符串中最右邊的長度為integer值的字符串。 | ||
返回string2中string1在位置integer之后第一次出現的位置。 | ||
使用PARSE_URL函數,返回目標URL中指定部分解析后的值。 | ||
使用REGEXP函數,對指定的字符串執行一個正則表達式搜索,并返回一個Boolean值表示是否找到指定的匹配模式。 | ||
返回反轉的字符串。 | ||
使用SPLIT_INDEX函數,將目標字符串按照指定分隔符分割成若干段,返回指定位置的字段信息。 | ||
使用分隔符將string1拆分為鍵值對后返回一個 map。 | ||
返回字符串的子字符串,從位置integer1開始,長度為integer2。 | ||
時間函數 | 以yyyy-MM-dd的形式返回從字符串解析的 SQL日期。 | |
使用DATEDIFF函數計算兩個日期之間的天數差值。 | ||
使用DATE_ADD函數返回指定日期增加目標天數后的日期。 | ||
使用DATE_SUB函數返回指定日期減去目標天數后的日期。 | ||
以HH:mm:ss的形式返回從字符串解析的SQL 時間。 | ||
以yyyy-MM-dd HH:mm:ss[.SSS]的形式返回從字符串解析的SQL時間戳。 | ||
從dd hh:mm:ss.fff形式的字符串解析SQL 毫秒間隔或者從yyyy-mm形式的字符串解析 SQL月數間隔。 | ||
返回本地時區的當前SQL時間,返回類型為 TIME(0)。 | ||
返回本地時區的當前SQL時間,返回類型為 TIMESTAMP(3)。 | ||
返回本地時區的當前SQL時間,這是 LOCAL_TIME的同義詞。 | ||
返回本地時區中的當前SQL日期。 | ||
返回本地時區的當前SQL時間戳。 | ||
返回本地時區的當前SQL時間戳,這是 CURRENT_TIMESTAMP的同義詞。 | ||
返回本地時區的當前SQL時間戳。 | ||
返回從時間的時間間隔單位部分提取的long值。 | ||
從SQL日期date返回年份。 | ||
從SQL日期date 返回一年中的季度。 | ||
從SQL日期date返回一年中的月份。 | ||
從SQL日期date返回一年中的第幾周。 | ||
從SQL日期date返回一年中的第幾天。 | ||
從SQL日期date返回一個月中的第幾天。 | ||
從SQL時間戳timestamp返回小時單位部分的小時數。 | ||
從SQL時間戳timestamp返回分鐘單位的分鐘數。 | ||
從SQL時間戳timestamp返回秒單位部分的秒數。 | ||
返回將時間點timepoint向下取值到時間單位 timeintervalunit的值。 | ||
返回將時間點timespoint向上取值到時間單位 TIMEINTERVALUNIT的值。 | ||
如果由 (timepoint1, temporal1) 和 (timepoint2, temporal2)定義的兩個時間間隔重疊,則返回true。 | ||
使用DATE_FORMAT函數將字符串類型的日期從原格式轉換至目標格式。 | ||
使用DATE_FORMAT_TZ函數將時間戳類型的數據根據指定的時區,轉成指定格式的字符串。 | ||
將指定時間間隔單位的時間加上指定的間隔時間,返回一個新的時間點。 | ||
返回timepoint1和timepoint2之間時間間隔。 | ||
將日期時間string1(具有默認ISO時間戳格式yyyy-MM-dd HH:mm:ss)從時區string2轉換為時區string3的值。 | ||
使用FROM_UNIXTIME函數返回VARCHAR類型的日期值。 | ||
使用UNIX_TIMESTAMP函數,將入參轉換為長整型的時間戳。 | ||
使用TO_DATE函數,將INT類型或者VARCHAR類型的日期轉換成DATE類型。 | ||
將紀元秒或紀元毫秒轉換TIMESTAMP_LTZ。 | ||
將UTC+0時區下格式為string2(默認為yyyy-MM-dd HH:mm:ss)的字符串string1轉換為時間戳。 | ||
使用TO_TIMESTAMP_TZ函數,將VARCHAR類型的日期根據指定時區轉換成TIMESTAMP類型。 | ||
返回給定時間列屬性rowtime的當前水印。 | ||
條件函數 | 當第一個時間值包含在 (valueX_1, valueX_2, …) 中時,返回resultX。 | |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END | 滿足第一個條件X時返回resultX。 | |
如果value1等于value2返回NULL,否則返回 value1。 | ||
從value1, value2, … 返回第一個不為NULL的值。 | ||
如果滿足條件,則返回true_value,否則返回 false_value。 | ||
如果輸入為NULL,則返回 null_replacement,否則返回輸入。 | ||
如果字符串中的所有字符都是字母,則返回true,否則返回false。 | ||
如果string可以解析為有效數字,則返回true,否則返回false。 | ||
如果字符串中的所有字符都是數字,則返回true,否則返回false。 | ||
返回所有輸入參數的最大值,如果輸入參數中包含NULL,則返回NULL。 | ||
返回所有輸入參數的最小值,如果輸入參數中包含NULL,則返回NULL。 | ||
類型轉換函數 | 使用CONV函數對數字或字符類型的數值進行進制轉換。 | |
返回被強制轉換為類型type的新值。 | ||
返回輸入表達式的數據類型的字符串表示形式。 | ||
集合函數 | 返回數組中元素的數量。 | |
返回數組中INT位置的元素。 | ||
返回數組的唯一元素(其基數應為1)。 | ||
返回map中的entries數量。 | ||
返回map中指定key對應的值。 | ||
JSON函數 | 判斷給定的字符串是否為有效的JSON。 | |
JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ]) | 確定一個JSON字符串是否符合給定的路徑搜索條件。 | |
將一個值序列化為JSON。該函數返回一個包含序列化值的JSON字符串。 | ||
使用JSON_VALUE函數,從JSON字符串中提取指定路徑的表達式。 | ||
從JSON字符串中提取JSON值。 | ||
JSON_OBJECT([[KEY] key VALUE value]* [ { NULL | ABSENT } ON NULL ]) | 從鍵值對列表中構建一個JSON對象字符串。 | |
JSON_OBJECTAGG([KEY] key VALUE value [ { NULL | ABSENT } ON NULL ]) | 將鍵值表達式匯總為一個JSON對象字符串。 | |
從值列表中構建一個JSON數組字符串。 | ||
通過將項聚合成一個數組來構建一個JSON對象字符串。 | ||
值構建函數 | -- implicit constructor with parenthesis (value1 [, value2]*) | 返回從值列表 (value1, value2, …) 創建的行。 |
返回從值列表 (value1, value2, …) 創建的數組。 | ||
返回從鍵值對列表 ((value1, value2), (value3, value4), …) 創建的map。 | ||
值獲取函數 | 按名稱從Flink復合類型(例如,Tuple,POJO)返回字段的值。 | |
返回Flink復合類型(例如,Tuple,POJO)的平面表示,將其每個直接子類型轉換為單獨的字段。 | ||
分組函數 | 返回唯一標識分組鍵組合的整數。 | |
GROUPING(expression1 [, expression2]* ) | GROUPING_ID(expression1 [, expression2]* ) | 返回給定分組表達式的位向量。 | |
哈希函數 | 以32個十六進制數字的字符串形式返回string的MD5哈希值。 | |
以40個十六進制數字的字符串形式返回string 的SHA-1哈希值。 | ||
以56個十六進制數字的字符串形式返回string的SHA-224哈希值。 | ||
以64個十六進制數字的字符串形式返回string的SHA-256哈希值。 | ||
以96個十六進制數字的字符串形式返回string的SHA-384哈希值。 | ||
以128個十六進制數字的字符串形式返回string的SHA-512哈希值。 | ||
使用SHA-2系列散列函數(SHA-224,SHA-256,SHA-384或SHA-512)返回散列值。 | ||
使用MURMUR_HASH函數,按Murmur 32哈希算法計算指定參數的32位哈希值。 | ||
使用MURMUR_HASH_64函數,按Murmur 128哈希算法計算指定參數的64位哈希值。 | ||
其他 | 使用ISNAN函數,判斷指定的浮點數是否為NaN(Not a number),類似于Java中Double.isNaN()或Float.isNaN()函數。 | |
使用KEYVALUE函數,將目標字符串按照split1分隔符拆分成Key-Value(KV)對,然后按照split2分隔符將Key-Value對分開,返回Key對應的Value。 |
表值函數
函數 | 說明 |
按from、from+1、from+2 … to-1的規則,生成一系列填充數據。 | |
從JSON字符串中取出各路徑字符串所表示的值。 | |
將目標字符串中拆分為Key-Value(KV)對,匹配split1和split2的KV對,并返回key_name1和key_name2對應的Value值。 | |
根據指定的分隔符將目標字符串拆分為子字符串,并返回子字符串列表。 |
聚合函數
函數 | 說明 |
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) | 默認情況下或使用關鍵字ALL,返回不為NULL的表達式的輸入行數。 |
返回輸入行數。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的平均值(算術平均值)。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行的表達式總和。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的最大值。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的最小值。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的總體標準偏差。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的樣本標準偏差。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的總體方差(總體標準差的平方)。 | |
默認情況下或使用關鍵字ALL,返回所有輸入行中表達式的樣本方差(樣本標準差的平方)。 | |
默認情況下或使用關鍵字ALL,返回跨所有輸入行的多組表達式。 | |
VAR_SAMP() 的同義方法。 | |
返回值在一組值中的排名。 | |
返回值在一組值中的排名。結果是一加先前分配的等級值。 | |
在窗口分區內根據rows的排序為每一行分配一個唯一的序列號,從一開始。 | |
返回窗口中當前行之后第offset行處的表達式值。 說明 流模式下暫不支持LEAD函數。 | |
返回窗口中當前行之前第offset行處的表達式值。 | |
連接字符串表達式的值并在它們之間放置分隔符值。 | |
提升作業性能。 | |
返回指定數據流的第1條非NULL數據。 | |
返回指定數據流的最后1條非NULL數據。 |