flink内置函数
flink支持的字符串函数:
string1 || string2 : 两个字符串串联
CHAR_LENGTH(string) / CHARACTER_LENGTH(string) :返回字符串字符长度
UPPER(string) : 返回大写格式的字符串
LOWER(string) : 返回小写格式的字符串
POSITION(string1 IN string2) : 返回string1在 string2第一次出现的位置,开始位置是1 ,如果没有返回0
TRIM([ BOTH | LEADING | TRAILING ] string1 FROM string2) : 从string2中移除string1,默认情况是两边的空格都被删除
LTRIM(string) / RTRIM(string) :移除字符串左边/右边空格
REPEAT(string, integer) : 返回一个字符串,将其重复integer代表的整数次数
REGEXP_REPLACE(string1, string2, string3) : 在string1中匹配正则表达式string2,然后将其匹配的结果替换为string3
OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) : 从字符串string1的integer1位置处开始(从0开始数),使用string2替换掉,默认integer2时string2的长度
SUBSTRING(string FROM integer1 [ FOR integer2 ]) : 从字符串integer1开始 截取长度为integer2的子字符串
REPLACE(string1, string2, string3) : 使用字符串string3来代替字符串string1中的字string2(非重叠)
REGEXP_EXTRACT(string1, string2[, integer]) : 从字符串string1中提取字符串,通过使用一个正则表达式string2和正则表达式匹配组索引的整数
INITCAP(string) : 将字符串string中每个单词的首字母大写,每个单词的非首字母小写,空格隔开每个单词
CONCAT(string1, string2,…) : 拼接多个字符串
CONCAT_WS(string1, string2, string3,…) : 使用特殊符号sting1来串联string2 string3…字符串
LPAD(string1, integer, string2) : 从string1中返回长度为integer的字符串,如果字符串string1的长度小于integer,那么在字符串左侧使用string2填充,来达到integer长度
RPAD(string1, integer, string2) : 从string1中返回长度为integer的字符串,如果字符串string1的长度小于integer,那么在字符串右侧使用string2填充,来达到integer长度
FROM_BASE64(string)/TO_BASE64(string) 返回base64解码/编码后的字符串
blink增加的字符串函数
ASCII(string) : 如果string是null那么返回null,否则返回string第一个字符的整数值
CHR(integer) : 返回整数值的ASCII字符
DECODE(binary, string) : 使用string代表的编码(US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, 'UTF-16)将binary编码为字符串
ENCODE(string1, string2) : 使用string2代表的编码方式将字符串string2变为BINARY
INSTR(string1, string2) : 返回string2中第一次出现字符串string1的位置
LEFT(string, integer) / RIGHT(string, integer) : 返回字符串string中最左边/最后边的integer个字符
LOCATE(string1, string2[, integer]) : 返回字符串string2中integer位置后第一次出现string1的位置,不存在返回0
REGEXP(string1, string2) : 字符串string1的任何子串(包含空)能够匹配表达式string2返回TRUE,否则FALSE
REVERSE(string) : 字符串反转
SPLIT_INDEX(string1, string2, integer1) : 使用分隔符string2划分string1,返回这integer1处的值(基于0开始的)
STR_TO_MAP(string1[, string2, string3]]) : 划分一个字符串string1返回map, 键值队分隔符strign2默认是逗号,键值对内划分分隔符string3默认是等于号
SUBSTR(string[, integer1[, integer2]]) : 返回字符串string的子串,开始位置是integer1,长度是integer2
PARSE_URL(string1, string2[, string3]) : 返回URL中特殊的部分区域,string2的取值’HOST’, ‘PATH’, ‘QUERY’, ‘REF’, ‘PROTOCOL’, ‘AUTHORITY’, ‘FILE’, and ‘USERINFO’
HH:mm:ss
parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’) = ‘facebook.com’
parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY’, ‘k1’) = ‘v1’
flink支持的时间函数
DATE string : yyyy-MM-dd
TIME string : HH:mm:ss
TIMESTAMP string : yyyy-MM-dd HH:mm:ss[.SSS]
INTERVAL string range : range的值DAY, MINUTE, DAY TO HOUR, DAY TO SECOND
CURRENT_DATE : UTC time zone.
CURRENT_TIME :UTC time zone.
CURRENT_TIMESTAMP :UTC time zone.
LOCALTIME :local time zone
LOCALTIMESTAMP : local time zone
EXTRACT(timeintervalunit FROM temporal) :EXTRACT(DAY FROM DATE ‘2006-06-05’)=5
YEAR(date) : YEAR(DATE ‘1994-09-27’) = 1994
QUARTER(date) : QUARTER(DATE ‘1994-09-27’) = 3
MONTH(date) : MONTH(DATE ‘1994-09-27’) = 9
WEEK(date)
DAYOFYEAR(date)
DAYOFMONTH(date)
DAYOFWEEK(date)
HOUR(timestamp) : HOUR(TIMESTAMP ‘1994-09-27 13:14:15’) = 13
MINUTE(timestamp)
SECOND(timestamp)
FLOOR(timepoint TO timeintervalunit) : FLOOR(TIME ‘12:44:31’ TO MINUTE) = 12:44:00
(timepoint1, temporal1) OVERLAPS (timepoint2, temporal2) :
(TIME ‘2:55:00’, INTERVAL ‘1’ HOUR) OVERLAPS (TIME ‘3:30:00’, INTERVAL ‘2’ HOUR) = TRUE;
(TIME ‘9:00:00’, TIME ‘10:00:00’) OVERLAPS (TIME ‘10:15:00’, INTERVAL ‘3’ HOUR) = FALSE
DATE_FORMAT(timestamp, string) :暂时存在bug ,自定义udf
TIMESTAMPADD(timeintervalunit, interval, timepoint) :SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR.
TIMESTAMPADD(WEEK, 1, DATE ‘2003-01-02’) = 2003-01-09
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2):返回timepoint1与timepoint2直接timepointunit单位的差值
TIMESTAMPDIFF(DAY, TIMESTAMP ‘2003-01-02 10:00:00’, TIMESTAMP ‘2003-01-03 10:00:00’) = 1.
blink支持的日期函数
CONVERT_TZ(string1, string2, string3) : 转换time zone是string2的 日期string1 到time zone是string3后的日期
CONVERT(‘1970-01-01 00:00:00’, ‘UTC’, ‘America/Los_Angeles’) = ‘1969-12-31 16:00:00’.
FROM_UNIXTIME(numeric[, string])
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(string1[, string2])
TO_DATE(string1[, string2]) : 将日期时间字符串string1转为string2格式日期
TO_TIMESTAMP(string1[, string2])
NOW()
比较函数
value1 = value2 : 相等返回true ,如果其中一个为NULL那么返回UNKNOWN
value1 <> value2 :不等返回true,如果其中一个为NULL那么返回UNKNOWN
value1 > value2 :如果其中一个为NULL那么返回UNKNOWN
value1 >= value2 : 如果其中一个为NULL那么返回UNKNOWN
value1 <= value2
value IS NULL
value IS NOT NULL
value1 IS DISTINCT FROM value2
value1 IS NOT DISTINCT FROM value2
value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 :默认是ASYMMETRIC,如果value1大于等于value2 并且 value1小于等于value3那么返回true ; SYMMETRIC关键字时候,value1在[value2,value3]或者[value3,value2]范围内时候返回TRUE
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3
string1 LIKE string2
string1 NOT LIKE string2
string1 SIMILAR TO string2
string1 NOT SIMILAR TO string2
value1 IN (value2 [, value3]* ):4 IN (1, 2, 3) returns FALSE; 1 IN (1, 2, NULL) returns TRUE; 4 IN (1, 2, NULL) returns UNKNOWN
value1 NOT IN (value2 [, value3]* )
EXISTS (sub-query)
value IN (sub-query)
value NOT IN (sub-query)
逻辑函数
boolean1 OR boolean2 : 任意一个是true遍返回true
boolean1 AND boolean2 : boolean1 和 boolean2同时为true 返回ture
NOT boolean : boolean是true返回false,是false返回true,是unknown返回unknown
boolean IS FALSE
boolean IS NOT FALSE
boolean IS TRUE
boolean IS NOT TRUE
boolean IS UNKNOWN : NULLIF(TRUE,TRUE) IS UNKNOWN=true
boolean IS NOT UNKNOWN
集合函数
CARDINALITY(array) 返回array中元素数量
array [’ integer ‘] 返回integer索引处元素,从1开始
ELEMENT(array) : array多于一个元素抛异常,返回array中唯一元素
CARDINALITY(map)
map ‘[’ value ‘]’ : 返回map中指定key的元素
构造函数
ROW(value1, [, value2]*) :多个元素返回一个row
ARRAY ‘[’ value1 [, value2 ]* ‘]’ :多个元素返回一个数组
MAP ‘[’ value1, value2 [, value3, value4 ]* ‘]’ :多个元素返回一个map
哈希函数
MD5(string) :MD5哈希 32位
SHA1(string) :SHA-1哈希 40位
SHA224(string) :SHA-224哈希 56位
SHA256(string) :SHA-256哈希 64位
SHA384(string) :SHA-384哈希 96位
SHA512(string): SHA-512哈希 128
分组函数
GROUP_ID() : 返回 分组关键字组合 的唯一标识
GROUPING(expression1 [, expression2]* )
GROUPING_ID(expression1 [, expression2]* )
聚合函数
COUNT() COUNT(1) :返回输入的行数
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]) :返回输入行数 可以去重
AVG([ ALL | DISTINCT ] expression) :求均值
SUM([ ALL | DISTINCT ] expression) : 求和
MAX([ ALL | DISTINCT ] expression) : 求最大值
MIN([ ALL | DISTINCT ] expression) : 求最小值
STDDEV_POP([ ALL | DISTINCT ] expression) :总体求标准差
STDDEV_SAMP([ ALL | DISTINCT ] expression) :采用标准差
VAR_POP([ ALL | DISTINCT ] expression) : 总体方差
VAR_SAMP([ ALL | DISTINCT ] expression) : 采样方差
COLLECT([ ALL | DISTINCT ] expression)
blink支持的聚合函数
VARIANCE([ ALL | DISTINCT ] expression) : 采样方差
RANK() :返回一个值在一组值中的排名 RANK() OVER (PARTITION BY a ORDER BY proctime DESC) as rk
DENSE_RANK()
ROW_NUMBER()
LEAD(expression [, offset] [, default] )
LAG(expression [, offset] [, default])
FIRST_VALUE(expression) : 返回 有序集合中的第一个值
LAST_VALUE(expression) :返回有序集合中的最后一个值
LISTAGG(expression [, separator]) : 拼接一组值,默认增加分隔符逗号
select
listagg(ename) within group(order by deptno, ename) as default_listagg_sep,
listagg(ename, '; ') within group(order by deptno, ename desc) as custom_listagg_sep
from emp group by gender;
算术函数
- numeric : 返回numeric
- numeric: 返回numeric的负数
numeric1 + numeric2 :返回两个值的和
numeric1 - numeric2 :返回两个值的差
numeric1 * numeric2 :返回两个值的积
numeric1 / numeric2 :返回两个值的除
POWER(numeric1, numeric2) :返回 numeric1的numeric2次幂
ABS(numeric) :绝对值
MOD(numeric1, numeric2) :取模
SQRT(numeric) :平方根
LN(numeric) :以e为底,返回对数
LOG10(numeric):以10为底返回对数
LOG2(numeric) :以2为底,返回对数
LOG(numeric1, numeric2) :返回numeric2的对数 基于底数numeric1
EXP(numeric) :返回e的numeric幂
CEIL(numeric) /CEILING(numeric) :向上舍入数字 ,返回大于等于当前数值numeric的最小整数
FLOOR(numeric) :向下舍入数字 ,返回小于等于当前数值numeric的最大整数
SIN(numeric) :返回正弦值
SINH(numeric) :双曲正弦值
COS(numeric) :余弦值
TAN(numeric) :正切值
COT(numeric) :余切值
ASIN(numeric) :反正弦值
ACOS(numeric) :反余弦值
ATAN(numeric) : 反正切值
ATAN2(numeric1, numeric2) :返回坐标(numeric1, numeric2)的反正切
COSH(numeric) :返回双曲余弦值
DEGREES(numeric) :返回弧度值numeric的度数
RADIANS(numeric) :返回一个度值numeric的弧度
SIGN(numeric) :返回数字的符号
RAND() :返回一个[0.0,1.0)之间的伪随机数 double类型
RAND(integer) :返回一个带有seed初始值integer的伪随机数double类型的数值,范围[0.0,1.0)
RAND_INTEGER(integer) : 返回一个伪随机整数 [0,integer)
UUID()
BIN(integer):返回一个整数的二进制
HEX(numeric) :返回16进制数
TRUNCATE(numeric1, integer2) :返回截取integer2小数位的结果
truncate(42.345, 2) = 42.34
truncate(42.345) = 42.0