华为云用户手册

  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 connector的类型,只能为opentsdb。 connector.region 是 OpenTSDB服务所在的区域。 connector.tsdb-metrics 是 数据点的metric,支持参数化。 其个数为要为1或者和“connector.tsdb-values”个数相同。 多个metric请使用“;”分隔。 connector.tsdb-timestamps 是 数据点的timestamp,仅支持指定动态列。 数据类型支持int、bigint、string,仅支持数据形式。 其个数需要为1或者和“connector.tsdb-values”的个数相同。 多个timestamp请使用“;”分隔。 connector.tsdb-values 是 数据点的value,支持指定动态列或者常数值。 多个values请使用“;”分隔。 connector.tsdb-tags 是 数据点的tags,每个tags里面至少一个标签值,最多8个标签值,多个标签使用“,”分隔,支持参数化。 其个数需要为1或者和“connector.tsdb-values”的个数相同。 多个tags请使用“;”分隔。 connector.batch-insert-data-num 否 表示一次性批量写入的数据量,即数据条数,值必须为正整数,默认值为8。 connector.tsdb-link-address 是 待插入数据所属集群的OpenTSDB连接地址。
  • 注意事项 若使用MRS集群的OpenTSDB,请确保以下几点: OpenTSDB的ip地址和端口请从OpenTSDB服务配置中查看配置项“tsd.network.bind”和“tsd.network.port”分别获取。 若OpenTSDB服务配置项“tsd.https.enabled”的值为true,则sql语句中的“connector.tsdb-link-address”参数值格式为https://ip:port。若“tsd.https.enabled”为false,则“connector.tsdb-link-address”参数值格式可以为http://ip:port或者ip:port。 在建立增强型跨源连接时,需要将MRS集群中的/etc/hosts主机和ip映射信息添加到“主机信息”参数中。 当配置项支持参数化时,表示将记录中的一列或者多列作为该配置项的一部分。例如当配置项设置为car_${car_brand}时,如果一条记录的car_brand列值为BMW,则该配置项在该条记录下为car_BMW。 若支持动态列,则其形式需要为${columnName},其中columnName为相应的字段名。
  • 语法格式 create table tsdbSink ( attr_name attr_type (',' attr_name attr_type)* )with ( 'connector.type' = 'opentsdb', 'connector.region' = '', 'connector.tsdb-metrics' = '', 'connector.tsdb-timestamps' = '', 'connector.tsdb-values' = '', 'connector.tsdb-tags' = '', 'connector.tsdb-link-address' = '');
  • 聚合函数 聚合函数是从一组输入值计算一个结果。例如使用COUNT函数计算SQL查询语句返回的记录行数。聚合函数如表1所示。 表1 聚合函数表 函数 返回值类型 描述 COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) BIGINT 返回表达式不为NULL的输入行数。对每个值的一个唯一实例使用DISTINCT。 COUNT(*) COUNT(1) BIGINT 返回元组个数 AVG([ ALL | DISTINCT ] expression) DOUBLE 返回所有值的平均值。 对每个值的一个唯一实例使用DISTINCT。 SUM([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值的数值之和 对每个值的一个唯一实例使用DISTINCT MAX([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值的最大值 MIN([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值的最小值 STDDEV_POP([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值之间的数字字段的总体标准偏差 STDDEV_SAMP([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值之间的数字字段的样本标准偏差 VAR_POP([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值之间的数字字段的总体方差 VAR_SAMP([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值之间的数字字段的样本方差 COLLECT([ ALL | DISTINCT ] expression) MULTISET 返回所有输入值的MULTISET VARIANCE([ ALL | DISTINCT ] expression) DOUBLE 返回所有输入值之间的数字字段的样本方差 FIRST_VALUE(expression) 数据实际类型 返回有序数据中的第一个数据 LAST_VALUE(expression) 数据实际类型 返回有序数据中的最后一个数据 父主题: 内置函数
  • 示例 输入一条记录("student1", "student2, student3"),输出两条记录("student1", "student2") 和 ("student1", "student3") 。 create table s1(attr1 string, attr2 string) with (......);insert into s2 select attr1, b1 from s1 left join lateral table(split_cursor(attr2, ',')) as T(b1) on true;
  • 函数说明 表1 Hash函数说明 Hash函数 函数说明 MD5(string) 返回以32个十六进制数所表示的字符串的MD5哈希值 若字符串是null,则返回null SHA1(string) 返回以40个十六进制所表示的字符串的SHA-1哈希值 若字符串是null,则返回null SHA224(string) 返回以56个十六进制数所表示的字符串的SHA-224哈希值 若字符串是null,则返回null SHA256(string) 返回以64个十六进制数所表示的字符串的SHA-256哈希值 若字符串是null,则返回null SHA384(string) 返回以96个十六进制数所表示的字符串的SHA-384哈希值 若字符串是null,则返回null SHA512(string) 返回以128个十六进制数所表示的字符串的SHA-512哈希值 若字符串是null,则返回null SHA2(string, hashLength) 返回使用SHA-2哈希函数族(SHA-224, SHA-256, SHA-384, or SHA-512)得到的哈希值 第一个参数string表示被哈希的字符串,第二个参数hashLength表示哈希值的长度(224、256、384、512) 若任意参数为null,则返回null
  • 函数说明 表1 属性访问函数说明 值接入函数 函数说明 tableName.compositeType.field 选择单个字段,通过名称访问Apache Flink复合类型(如Tuple,POJO等)的字段并返回其值。 tableName.compositeType.* 选择所有字段,将Apache Flink复合类型(如Tuple,POJO等)和其所有直接子类型转换为简单表示,其中每个子类型都是单独的字段。
  • 详细样例代码 /** source **/CREATETABLE car_infos (cast_int_to_string int, cast_String_to_int string,case_string_to_timestamp string, case_timestamp_to_date timestamp(3)) WITH ( 'connector.type' = 'dis', 'connector.region' = 'xxxxx', 'connector.channel' = 'dis-input', 'format.type' = 'json');/** sink **/CREATETABLE cars_infos_out (cast_int_to_string string, cast_String_to_intint, case_string_to_timestamp timestamp(3), case_timestamp_to_date date) WITH ( 'connector.type' = 'dis', 'connector.region' = 'xxxxx', 'connector.channel' = 'dis-output', 'format.type' = 'json');/** 统计car的静态信息 **/INSERTINTO cars_infos_outSELECT cast(cast_int_to_string as string), cast(cast_String_to_int as int), cast(case_string_to_timestamp as timestamp), cast(case_timestamp_to_date as date)FROM car_infos;
  • 示例 将amount值转换成整型。 insert into temp select cast(amount as INT) from source_stream; 表1 类型转换函数示例 示例 说明 示例 cast(v1 as string) 将v1转换为字符串类型,v1可以是数值类型,TIMESTAMP/DATE/TIME。 表T1: | content (INT) || ------------- || 5 | 语句: SELECT cast(content as varchar)FROM T1; 结果: "5" cast (v1 as int) 将v1转换为int, v1可以是数值类型或字符类。 表T1: | content (STRING) || ------------- || "5" | 语句: SELECT cast(content as int)FROM T1; 结果: 5 cast(v1 as timestamp) 将v1转换为timestamp类型,v1可以是字符串或DATE/TIME。 表T1: | content (STRING) || ------------- || "2018-01-01 00:00:01" | 语句: SELECT cast(content as timestamp)FROM T1; 结果: 1514736001000 cast(v1 as date) 将v1转换为date类型, v1可以是字符串或者TIMESTAMP。 表T1: | content (TIMESTAMP) || ------------- || 1514736001000 | 语句: SELECT cast(content as date)FROM T1; 结果: "2018-01-01" Flink作业不支持使用CAST将“BIGINT”转换为“TIMESTAMP”,可以使用to_timestamp进行转换。
  • 函数说明 表1 值构建函数说明 值构建函数 函数说明 ROW(value1, [, value2]*) (value1, [, value2]*) 根据一系列值创建ROW ARRAY ‘[’ value1 [, value2 ]* ‘]’ 根据一系列值创建数组 MAP ‘[’ key1, value1 [, key2, value2]* ‘]’ 根据一系列值创建MAP 其键值对为(key1, value1),(key2, value2)
  • 算术运算符 算术运算符包括双目运算符与单目运算符,这些运算符都将返回数字类型。Flink SQL所支持的算术运算符如表3所示。 表3 算术运算符 运算符 返回类型 描述 + numeric 所有数字类型 返回数字。 - numeric 所有数字类型 返回负数。 A + B 所有数字类型 A和B相加。结果数据类型与操作数据类型相关,例如一个整数类型数据加上一个浮点类型数据,结果数值为浮点类型数据。 A - B 所有数字类型 A和B相减。结果数据类型与操作数据类型相关。 A * B 所有数字类型 A和B相乘。结果数据类型与操作数据类型相关。 A / B 所有数字类型 A和B相除。结果是一个double(双精度)类型的数值。 POWER(A, B) 所有数字类型 返回A数的B次方乘幂。 ABS(numeric) 所有数字类型 返回数值的绝对值。 MOD(A, B) 所有数字类型 返回A除以B的余数(模数)。 返回值只有在A为负数时才为负数。 SQRT(A) 所有数字类型 返回A的平方根。 LN(A) 所有数字类型 返回A的自然对数(基数e)。 LOG10(A) 所有数字类型 返回A的基数10对数。 LOG2(A) 所有数字类型 返回A的基数2对数。 LOG(B) LOG(A, B) 所有数字类型 当只有一个参数,返回B的自然对数(基数e)。 当有两个参数,返回B以A为基数的对数。 B必须大于0,且A必须大于1。 EXP(A) 所有数字类型 返回e的a次方。 CEIL(A) CEILING(A) 所有数字类型 将参数向上舍入为最接近的整数。例如ceil(21.2),返回22。 FLOOR(A) 所有数字类型 对给定数据进行向下舍入最接近的整数。例如floor(21.2),返回21。 SIN(A) 所有数字类型 计算给定A的正弦值。 COS(A) 所有数字类型 计算给定A的余弦值。 TAN(A) 所有数字类型 计算给定A的正切值。 COT(A) 所有数字类型 计算给定A的余切值。 ASIN(A) 所有数字类型 计算给定A的反正弦值。 ACOS(A) 所有数字类型 计算给定A的反余弦值。 ATAN(A) 所有数字类型 计算给定A的反正切值。 ATAN2(A, B) 所有数字类型 计算给定坐标(A, B)的反正切值。 COSH(A) 所有数字类型 计算给定A的双曲余弦值。返回类型为DOUBLE。 DEGREES(A) 所有数字类型 返回弧度所对应的角度。 RADIANS(A) 所有数字类型 返回角度所对应的弧度。 SIGN(A) 所有数字类型 返回a所对应的正负号,a为正返回1,a为负,返回-1,否则返回0。 ROUND(A, d) 所有数字类型 返回小数部分,d位之后数字的四舍五入,d为int型。例如round(21.263,2),返回21.26。 PI 所有数字类型 返回pi的值。 E() 所有数字类型 返回e的值。 RAND() 所有数字类型 返回一个0.0和1.0之间的随机double类型的数(包含0.0,不包含1.0)。 RAND(A) 所有数字类型 根据初始化种子A,返回一个0.0和1.0之间的随机double类型的数(包含0.0,不包含1.0)。若初始化种子相同,则返回的随机数相同。 RAND_INTEGER(A) 所有数字类型 返回一个0和A之间的随机整数(包含0,不包含A)。 RAND_INTEGER(A, B) 所有数字类型 根据初始化种子A,返回一个0和B之间的随机整数值(包含0,不包含B) UUID() 所有数字类型 返回一个UUID字符串。 BIN(A) 所有数字类型 返回一个整数A的二进制字符串。如为null则返回null。 HEX(A) HEX(B) 所有数字类型 返回一个整数A或者字符串B的十六进制字符串。若A或B为null,则返回null。 TRUNCATE(A, d) 所有数字类型 返回保留小数点后d为小数的数字。若A或d为null,则返回null。 例如:truncate(42.345, 2) = 42.340 truncate(42.345) = 42.000 PI() 所有数字类型 返回pi的值 注意事项 字符串类型不能参与算术运算。
  • 函数说明 表1 集合函数说明 集合函数 函数说明 CARDINALITY(array) 返回数组中元素个数 array ‘[’ integer ‘]’ 返回数组索引为integer的元素。索引从1开始 ELEMENT(array) 返回数组中的唯一元素。 若数组为空,则返回null 若数组中元素个数大于1,则抛出异常 CARDINALITY(map) 返回map中键值对的条数 map ‘[’ key ‘]’ 返回map中key所对应的值
  • JSON_VAL函数使用说明 语法 STRING JSON_VAL(STRING json_string, STRING json_path) 表2 参数说明 参数 数据类型 说明 json_string STRING 需要解析的JSON对象,使用字符串表示。 json_path STRING 解析JSON的路径表达式,使用字符串表示。 目前path支持如下表达式参考下表表3。 表3 json_path参数支持的表达式 表达式 说明 $ 根对象 [] 数组下标 * 数组通配符 . 取子元素 示例 测试输入数据。 测试数据源kafka,具体消息内容参考如下: "{name:James,age:24,sex:male,grade:{math:95,science:[80,85],english:100}}""{name:James,age:24,sex:male,grade:{math:95,science:[80,85],english:100}]" 使用JSON_VAL编写SQL create table kafkaSource( message STRING)with ( 'connector.type' = 'kafka', 'connector.version' = '0.11', 'connector.topic' = 'topic-swq', 'connector.properties.bootstrap.servers' = 'xxx.xxx.xxx.xxx:9092,yyy.yyy.yyy:9092,zzz.zzz.zzz.zzz:9092', 'connector.startup-mode' = 'earliest-offset', 'format.field-delimiter' = '|', 'format.type' = 'csv');create table kafkaSink( message1 STRING, message2 STRING, message3 STRING, message4 STRING, message5 STRING, message6 STRING)with ( 'connector.type' = 'kafka', 'connector.version' = '0.11', 'connector.topic' = 'topic-swq-out', 'connector.properties.bootstrap.servers' = 'xxx.xxx.xxx.xxx:9092,yyy.yyy.yyy:9092,zzz.zzz.zzz.zzz:9092', 'format.type' = 'json');INSERT INTO kafkaSinkSELECT JSON_VAL(message,""),JSON_VAL(message,"$.name"),JSON_VAL(message,"$.grade.science"),JSON_VAL(message,"$.grade.science[*]"),JSON_VAL(message,"$.grade.science[1]"),JSON_VAL(message,"$.grade.dddd")FROM kafkaSource; 查看输出结果 {"message1":null,"message2":"swq","message3":"[80,85]","message4":"[80,85]","message5":"85","message6":null}{"message1":null,"message2":null,"message3":null,"message4":null,"message5":null,"message6":null}
  • TO_TIMESTAMP 功能描述 将string2格式的日期时间字符串string1转换为TIMESTAMP类型返回。 语法说明 TIMESTAMP TO_TIMESTAMP(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合格式的字符串会返回NULL。 string2 STRING 日期字符串格式。如果该参数不指定,则默认为'yyyy-MM-dd HH:mm:ss' 。 示例 测试语句 SELECT TO_TIMESTAMP('1997-04-25', 'yyyy-MM-dd') AS `result`, TO_TIMESTAMP('1997-04-25 00:00:00') AS `result2`, TO_TIMESTAMP('1997-04-25 00:00:00', 'yyyy-MM-dd HH:mm:ss') AS `result3`FROMtesttable; 测试结果 result result2 result3 1997-04-25 00:00 1997-04-25 00:00 1997-04-25 00:00
  • CONVERT_TZ 功能描述 参考语法说明,本函数将日期时间string1(具有默认ISO时间戳格式'yyyy-MM-dd HH:mm:ss' )从时区string2转换为时区string3的值,结果以STRING类型返回。 语法说明 STRING CONVERT_TZ(string1, string2, string3) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串,不符合格式的字符串会返回NULL。 string2 STRING 转换前时区。时区的格式应该是缩写如“PST”,全名如“America/Los_Angeles”,或自定义ID如“GMT-08:00”。 string3 STRING 转换后时区。时区的格式应该是缩写如“PST”,全名如“America/Los_Angeles”,或自定义ID如“GMT-08:00”。 示例 测试语句 SELECT CONVERT_TZ(1970-01-01 00:00:00, UTC, America/Los_Angeles) AS `result`, CONVERT_TZ(1997-04-25 10:00:00, UTC, GMT-08:00) AS `result2`FROMtesttable; 测试结果 result result2 1969-12-31 16:00:00 1997-04-25 02:00:00
  • TO_DATE 功能描述 参数语法说明,本函数将string2格式的日期字符串string1转换为DATE类型。 语法说明 DATE TO_DATE(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合格式的字符串会执行报错。 string2 STRING 字符串格式。如果不指定该参数,则默认为'yyyy-MM-dd' 。 示例 测试语句 SELECT TO_DATE('1997-04-25') AS `result`, TO_DATE('1997:04:25', 'yyyy-MM-dd') AS `result2`, TO_DATE('1997-04-25 00:00:00', 'yyyy-MM-dd HH:mm:ss') AS `result3`FROMtesttable; 测试结果 result result2 result3 1997-04-25 1997-04-25 1997-04-25
  • TIMESTAMPADD 功能描述 参考语法说明,本函数功能为将整型interval与timeintervalunit组成的结果添加到timepoint中,并返回添加后的日期时间。 TIMESTAMPADD函数返回结果与timepoint相同。例外场景为:如果timepoint输入类型为TIMESTAMP,也可以将TIMESTAMPADD函数返回结果插入到DATE类型的表字段中。 语法说明 TIMESTAMP(3)/DATE/TIME TIMESTAMPADD(timeintervalunit, interval, timepoint) 入参说明 参数名 数据类型 参数说明 timeintervalunit TIMEUNIT 时间单位。 interval INT 整型的时间间隔。 timepoint TIMESTAMP/DATE/TIME 时间点 示例 测试语句 SELECT TIMESTAMPADD(WEEK, 1, DATE '1997-04-25') AS `result`, TIMESTAMPADD(QUARTER, 1, TIMESTAMP '1997-04-25 10:11:12') AS `result2`,TIMESTAMPADD(SECOND, 2, TIME '10:11:12') AS `result3`FROMtesttable; 测试结果 result result2 result3 1997-05-02 如果该字段插入到TIMESTAMP类型的表字段中,则返回:1997-07-25T10:11:12 如果该字段插入到DATE类型的表字段中,则返回:1997-07-25 10:11:14
  • TIMESTAMPDIFF 功能描述 参考语法说明,本函数功能为返回timepoint1和timepoint2之间的时间间隔,间隔的单位由第一个参数timepointunit指定。 语法说明 INT TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) 入参说明 参数名 数据类型 参数说明 timepointunit TIMEUNIT 时间单位。取值范围为: SECOND、MINUTE、HOUR、DAY、MONTH、YEAR。 timepoint1/timepoint2 TIMESTAMP/DATE 时间点。 示例 测试语句 SELECT TIMESTAMPDIFF(DAY, TIMESTAMP '1997-04-25 10:00:00', TIMESTAMP '1997-04-28 10:00:00') AS `result`, TIMESTAMPDIFF(DAY, DATE '1997-04-25', DATE '1997-04-28') AS `result2`,TIMESTAMPDIFF(DAY, TIMESTAMP '1997-04-27 10:00:20', TIMESTAMP '1997-04-25 10:00:00') AS `result3`FROMtesttable; 测试结果 result result2 result3 3 3 -2
  • UNIX_TIMESTAMP(string1[, string2]) 功能描述 参数语法说明,本函数将以string2格式的时间字符串string1转为Unix 时间戳(以秒为单位)。以BIGINT类型返回。 语法说明 BIGINT UNIX_TIMESTAMP(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合string2参数格式的字符串语法会报错。 string2 STRING 时间字符串格式。如果不指定该参数,则默认为'yyyy-MM-dd HH:mm:ss' 。 示例 测试语句 SELECT UNIX_TIMESTAMP('1997-04-25', 'yyyy-MM-dd') AS `result`, UNIX_TIMESTAMP('1997-04-25 00:00:10', 'yyyy-MM-dd HH:mm:ss') AS `result2`, UNIX_TIMESTAMP('1997-04-25 00:00:00') AS `result3`FROMtesttable; 测试结果 result result2 result3 861897600 861897610 861897600
  • DATE_FORMAT 功能描述 将时间戳或时间戳格式的字符串转换为指定格式的日期字符串。 语法说明 STRING DATE_FORMAT(timestamp, dateformat) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP/STRING 时间点。 dateformat STRING 日期格式字符串。 示例 测试语句 SELECT DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yyyy-MM-dd HH:mm:ss') AS `result`, DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yyyy-MM-dd') AS `result2`,DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yy/MM/dd HH:mm') AS `result3`, DATE_FORMAT('1997-04-25 10:11:12', 'yyyy-MM-dd') AS `result4`FROMtesttable; 测试结果 result result2 result3 result4 1997-04-25 10:11:12 1997-04-25 97/04/25 10:11 1997-04-25
  • FROM_UNIXTIME 功能描述 参考语法说明,本函数根据时间戳numeric和当前时区返回string格式的时间。 语法说明 STRING FROM_UNIXTIME(numeric[, string]) 入参说明 参数名 数据类型 参数说明 numeric BIGINT 内部时间戳值,表示自'1970-01-01 00:00:00' UTC 以来的秒数,值可以由UNIX_TIMESTAMP() 函数生成。 string STRING 时间字符串格式。如果该参数不指定,则默认为'yyyy-MM-dd HH:mm:ss'。 示例 测试语句 SELECT FROM_UNIXTIME(44) AS `result`, FROM_UNIXTIME(44, 'yyyy:MM:dd') AS `result2`FROMtesttable; 测试结果 result result2 1970-01-01 08:00:44 1970:01:01
  • MINUTE 功能描述 返回当前时间戳中的分钟数(0 到 59 之间的整数),返回类型为BIGINT。 语法说明 BIGINT MINUTE(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT MINUTE(TIMESTAMP '1997-04-25 10:11:12') AS `result`FROMtesttable; 测试结果 result 11
  • DAYOFWEEK 功能描述 计算当前日期是当前周的第几天(1 到 7之间的整数),以BIGINT类型返回。 需要注意这里自然周的起点是星期天,即每周的第1天是星期天,第2天是星期一,依次类推。 语法说明 BIGINT DAYOFWEEK(date) 入参说明 参数名 数据类型 参数说明 date DATE SQL日期。 示例 测试语句 SELECT DAYOFWEEK(DATE '1997-04-25') AS `result`FROMtesttable; 测试结果 result 6
  • FLOOR 功能描述 返回将时间点向下取值到指定时间单位的值。 语法说明 TIME/TIMESTAMP(3) FLOOR(timepoint TO timeintervalunit) 入参说明 参数名 数据类型 参数说明 timepoint TIMESTAMP/TIME SQL时间或SQL时间戳。 timeintervalunit TIMEUNIT 时间单位,类型可以是YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 示例 测试语句。注意以下userDefined结果表语法说明,请参考userDefined结果表。 create table PrintSink ( message TIME, message2 TIME, message3 TIMESTAMP(3))with ( 'connector.type' = 'user-defined', 'connector.class-name' = 'com.swqtest.flink.sink.PrintSink'--注意修改为自定义的类,具体请参考userDefined结果表语法说明。);INSERT INTO PrintSinkSELECT FLOOR(TIME '13:14:15' TO MINUTE) AS `result` FLOOR(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result2`, FLOOR(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result3`; 测试结果 PrintSink表的字段值分别为: message message2 message3 13:14 13:14 1997-04-25T13:14
  • HOUR 功能描述 从当前时间戳获取以24小时制的小时数进行返回,范围0-23(0 到 23 之间的整数),返回类型为BIGINT。 语法说明 BIGINT HOUR(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT HOUR(TIMESTAMP '1997-04-25 10:11:12') AS `result`FROMtesttable; 测试结果 result 10
  • SECOND 功能描述 返回当前时间戳中的秒数(0 到 59 之间的整数),返回类型为BIGINT。 语法说明 BIGINT SECOND(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT SECOND(TIMESTAMP '1997-04-25 10:11:12') AS `result`FROMtesttable; 测试结果 result 12
  • CEIL 功能描述 返回将时间点向上取值到指定时间单位的值。 语法说明 TIME/TIMESTAMP(3) CEIL(timepoint TO timeintervalunit) 入参说明 参数名 数据类型 参数说明 timepoint TIMESTAMP/TIME SQL时间或SQL时间戳。 timeintervalunit TIMEUNIT 时间单位,类型可以是YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 示例 测试语句。注意以下userDefined结果表语法说明,请参考userDefined结果表。 create table PrintSink ( message TIME, message2 TIME, message3 TIMESTAMP(3))with ( 'connector.type' = 'user-defined', 'connector.class-name' = 'com.swqtest.flink.sink.PrintSink'--注意修改为自定义的类,具体请参考userDefined结果表语法说明。);INSERT INTO PrintSinkSELECT CEIL(TIME '13:14:15' TO MINUTE) AS `result` CEIL(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result2`, CEIL(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result3`; 测试结果 result result2 result3 13:15 13:15 1997-04-25T13:15
  • OVERLAPS 功能描述 若两个时间范围有重叠,则返回TRUE,反之,则返回FALSE。 语法说明 BOOLEAN (timepoint1, temporal1) OVERLAPS (timepoint2, temporal2) 入参说明 参数名 数据类型 参数说明 timepoint1/timepoint2 DATE/TIME/TIMESTAMP 时间点。 temporal1/temporal2 DATE/TIME/TIMESTAMP/INTERVAL 时间点或时间间隔。 (timepoint, temporal)在判断是否重叠时为闭区间。 temporal可以是DATE/TIME/TIMESTAMP也可以是INTERVAL。 当temporal是DATE/TIME/TIMESTAMP时,(timepoint, temporal)表示timepoint, temporal之间的时间间隔。允许temporal在timepoint之前,如(DATE '1997-04-25', DATE '1997-04-23')也合法。 当temporal是INTERVAL时,(timepoint, temporal)表示timepoint, timepoint+temporal之间的时间间隔。 必须保证(timepoint1, temporal1)和(timepoint2, temporal2)是同一数据类型的时间间隔。 示例 测试语句 SELECT (TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) AS `result`, (TIME '2:30:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) AS `result2`,(TIME '2:30:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:31:00', INTERVAL '2' HOUR) AS `result3`,(TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:00:00', INTERVAL '3' HOUR) AS `result4`,(TIMESTAMP '1997-04-25 12:00:00', TIMESTAMP '1997-04-25 12:20:00') OVERLAPS (TIMESTAMP '1997-04-25 13:00:00', INTERVAL '2' HOUR) AS `result5`,(DATE '1997-04-23', INTERVAL '2' DAY) OVERLAPS (DATE '1997-04-25', INTERVAL '2' DAY) AS `result6`,(DATE '1997-04-25', DATE '1997-04-23') OVERLAPS (DATE '1997-04-25', INTERVAL '2' DAY) AS `result7`FROMtesttable; 测试结果 result result2 result3 result4 result5 result6 result7 true true false true false true true
  • EXTRACT 功能描述 提取时间点或时间间隔中指定某一时间单位的部分,以BIGINT类型返回。 语法说明 BIGINT EXTRACT(timeinteravlunit FROM temporal) 入参说明 参数名 数据类型 参数说明 timeinteravlunit TIMEUNIT 需要从时间点或时间间隔中提取的时间单位,取值可以是:YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 temporal DATE/TIME/TIMESTAMP/INTERVAL 时间点或时间间隔。 不允许指定不存在于时间点或时间间隔中的时间单位,否则作业会提交失败。 例如如下错误语句,会报错YEAR不能从TIME中提取。 SELECT EXTRACT(YEAR FROM TIME '12:44:31' ) AS `result`FROMtesttable; 示例 测试语句 SELECT EXTRACT(YEAR FROM DATE '1997-04-25' ) AS `result`, EXTRACT(MINUTE FROM TIME '12:44:31') AS `result2`, EXTRACT(SECOND FROM TIMESTAMP '1997-04-25 13:14:15') AS `result3`, EXTRACT(YEAR FROM INTERVAL '2-10' YEAR TO MONTH) AS `result4`,FROMtesttable; 测试结果 result result2 result3 result4 1997 44 15 2
  • TIMESTAMP 功能描述 将时间字符串转换为时间戳,时间字符串格式为:"yyyy-MM-dd HH:mm:ss[.fff]",以TIMESTAMP(3)类型返回。 语法说明 TIMESTAMP(3) TIMESTAMP string 入参说明 参数名 数据类型 参数说明 string STRING 时间戳字符串。 注意该字符串格式必须为"yyyy-MM-dd HH:mm:ss[.fff]",否则语义校验会报错。 示例 测试语句 SELECT TIMESTAMP "1997-04-25 13:14:15" AS `result`, TIMESTAMP "1997-04-25 13:14:15.032" AS `result2`FROMtesttable; 测试结果 result result2 1997-04-25 13:14:15 1997-04-25 13:14:15.032
共100000条