本文為您介紹Realtime ComputeFlink版支援的所有內建函數。
支援的函數
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匹配SQLRegexstring2返回true。 | ||
如果string1與SQLRegexstring2不匹配返回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按照STRING2Regex的規則拆分,返回指定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函數,對指定的字串執行一個Regex搜尋,並返回一個Boolean值表示是否找到指定的匹配模式。 | ||
返回反轉的字串。 | ||
使用SPLIT_INDEX函數,將目標字串按照指定分隔字元分割成若干段,返回指定位置的欄位資訊。 | ||
使用分隔字元將string1拆分為索引值對後返回一個 map。 | ||
返回字串的子字串,從位置integer1開始,長度為integer2。 | ||
時間函數 | 以yyyy-MM-dd的形式返回從字串解析的 SQL日期。 | |
使用DATEDIFFFunction Compute兩個日期之間的天數差值。 | ||
使用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資料。 |