华为云用户手册

  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: CREATE TABLE logs ( cookieid string, createtime string, pv INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 cookie2 2015-04-10 2 cookie2 2015-04-11 3 cookie2 2015-04-12 5 cookie2 2015-04-13 6 cookie2 2015-04-14 3 cookie2 2015-04-15 9 cookie2 2015-04-16 7 示例:将所有记录根据cookieid分组,并按pv降序排列,返回组内每行的序号。命令示例如下: select cookieid, createtime, pv, row_number() over (partition by cookieid order by pv desc) as index from logs; -- 返回结果: cookie1 2015-04-12 7 1 cookie1 2015-04-11 5 2 cookie1 2015-04-16 4 3 cookie1 2015-04-15 4 4 cookie1 2015-04-13 3 5 cookie1 2015-04-14 2 6 cookie1 2015-04-10 1 7 cookie2 2015-04-15 9 1 cookie2 2015-04-16 7 2 cookie2 2015-04-13 6 3 cookie2 2015-04-12 5 4 cookie2 2015-04-11 3 5 cookie2 2015-04-14 3 6 cookie2 2015-04-10 2 7
  • 示例代码 返回123.0。 select round(123.321); 返回123.4。 select round(123.396, 1); 返回NULL。 select round(null); 返回123.321。 select round(123.321, 4); 返回123.3。 select round(123.321,1.33333); 返回123.3。 select round(123.321,1.33333);
  • 示例代码 返回a。 select regexp_substr('a1b2c3', '[a-z]'); 返回b。 select regexp_substr('a1b2c3', '[a-z]', 2, 1); 返回c。 select regexp_substr('a1b2c3', '[a-z]', 2, 2); 返回NULL。 select regexp_substr('a1b2c3', null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 source 是 STRING 待搜索的字符串。 pattern 是 STRING STRING类型常量或正则表达式。待匹配的模型。 start_position 否 BIGINT 起始位置,必须大于0。不指定时默认为1,表示从source的第一个字符开始匹配。 occurrence 否 BIGINT BIGINT常量,必须大于0。不指定时默认为1,表示返回第一次匹配的子串。
  • 示例代码 返回 2222。 select regexp_replace1('abcd', '[a-z]', '2'); 返回 2bcd。 select regexp_replace1('abcd', '[a-z]', '2', 1); 返回 a2cd。 select regexp_replace1('abcd', '[a-z]', '2', 2); 返回 ab2d。 select regexp_replace1('abcd', '[a-z]', '2', 3); 返回 abc2。 select regexp_replace1('abcd', '[a-z]', '2', 4);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 source 是 STRING 待替换的字符 pattern 是 STRING STRING类型常量或正则表达式。待匹配的模型。更多正则表达式编写规范,请参见正则表达式规范。pattern为空串时返回报错。 replace_string 是 STRING 将匹配pattern的字符串替换后的字符串。 occurrence 否 BIGINT 必须大于等于1,表示将第occurrence次匹配的字符串替换为replace_string,为1时表示替换所有匹配的子串。为其他类型或小于1时,返回报错。默认值为1。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 source 是 STRING 待替换的字符。 pattern 是 STRING STRING类型常量或正则表达式。待匹配的模型。更多正则表达式编写规范,请参见正则表达式规范。pattern为空串时返回报错。 replace_string 是 STRING 将匹配pattern的字符串替换后的字符串。 occurrence 否 BIGINT 必须大于等于1,表示将第occurrence次匹配的字符串替换为replace_string,为1时表示替换所有匹配的子串。为其他类型或小于1时,返回报错。默认值为1。 说明: 该字段仅Spark3.1.1版本的功能适用。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 source 是 STRING 源字符串。 pattern 是 STRING STRING类型常量或正则表达式。待匹配的模型。pattern为空串时返回报错。 start_position 否 BIGINT BIGINT类型常量。搜索的开始位置。不指定时默认值为1。 occurrence 否 BIGINT BIGINT类型常量。指定匹配次数,不指定时默认值为1,表示搜索第一次出现的位置。 return_option 否 BIGINT BIGINT类型常量。指定返回的位置。值为0或1,不指定时默认值为0,其他类型或不允许的值会返回报错。0表示返回匹配的开始位置,1表示返回匹配的结束位置。
  • 示例代码 将 basketball 按照 bas(.*?)(ball) 拆分。返回ket。 select regexp_extract('basketball', 'bas(.*?)(ball)'); 返回 basketball 。 select regexp_extract('basketball', 'bas(.*?)(ball)',0); 返回99。在 DLI 上提交正则计算的SQL,需要使用两个"\"作为转义字符。 select regexp_extract('8d99d8', '8d(\\d+)d8'); 返回【你好】。 select regexp_extract('【你好】hello', '([^\\x{00}-\\x{ff}]+)'); 返回你好。 select regexp_extract('【你好】hello', '([\\x{4e00}-\\x{9fa5}]+)');
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 source 是 STRING 待搜索的字符串,其他类型会返回报错。 pattern 是 STRING STRING类型常量或正则表达式。待匹配的模型。pattern为空串或其他类型时返回报错。 start_position 否 BIGINT BIGINT类型常量,必须大于0。其他类型或值小于等于0时返回报错。不指定时默认为1,表示从source的第一个字符开始匹配。
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: CREATE TABLE logs ( cookieid string, createtime string, pv INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 cookie2 2015-04-10 2 cookie2 2015-04-11 3 cookie2 2015-04-12 5 cookie2 2015-04-13 6 cookie2 2015-04-14 3 cookie2 2015-04-15 9 cookie2 2015-04-16 7 示例:将所有记录根据cookieid分组,并按pv降序排列,返回组内每行的序号。命令示例如下: select cookieid, createtime, pv, rank() over(partition by cookieid order by pv desc) as rank from logs where cookieid = 'cookie1'; -- 结果: cookie1 2015-04-12 7 1 cookie1 2015-04-11 5 2 cookie1 2015-04-16 4 3 (并列第三) cookie1 2015-04-15 4 3 cookie1 2015-04-13 3 5 (跳过4,从5开始) cookie1 2015-04-14 2 6 cookie1 2015-04-10 1 7
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 参数a非DOUBLE类型时,会隐式转换为DOUBLE类型后参与运算。 p 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数p的格式包括浮点数格式、整数格式、字符串格式。 参数p非DOUBLE类型时,会隐式转换为DOUBLE类型后参与运算。
  • 示例代码 假设列int_test中的元素为1、2、3、4,类型为INT类型。 返回3。 select percentile_approx(int_test,0.7) FROM int_test; 返回3。 select percentile_approx(int_test,0.75) FROM int_test; 返回2。 select percentile_approx(int_test,0.5) FROM int_test; 返回[1,2,2,3,4]。 select percentile_approx (int_test,ARRAY(0.1,0.3,0.5,0.6,0.9)) FROM int_test;
  • 示例代码 假设列int_test中的元素为1、2、3、4,类型为INT类型。 返回3.0999999999999996。 select percentile(int_test,0.7) FROM int_test; 返回3.997。 select percentile(int_test,0.999) FROM int_test; 返回2.5。 select percentile(int_test,0.5) FROM int_test; 返回[1.3,1.9,2.5,2.8,3.7]。 select percentile (int_test,ARRAY(0.1,0.3,0.5,0.6,0.9)) FROM int_test;
  • 示例代码 计算所有商品库存(items)的 0.5 百分位,精确度100。命令示例如下: select PERCENTILE_APPROX(items,0.5,100) from warehouse; 返回结果如下: +------------+ | _c0 | +------------+ | 521 | +------------+ 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的 0.5 百分位,精确度100。命令示例如下: select warehourseId, PERCENTILE_APPROX(items, 0.5, 100) from warehourse group by warehourseId; 返回结果如下: +------------+------------+ | warehouseId| _c1 | +------------+------------+ | city1 | 499 | | city2 | 354 | | city3 | 565 | +------------+------------+
  • 示例代码 计算所有商品库存(items)的 0.5 百分位。命令示例如下: select percentile(items,0.5) from warehouse; 返回结果如下: +------------+ | _c0 | +------------+ | 500.6 | +------------+ 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的 0.5 百分位。命令示例如下: select warehourseId, percentile(items, 0.5) from warehourse group by warehourseId; 返回结果如下: +------------+------------+ | warehouseId| _c1 | +------------+------------+ | city1 | 499.6 | | city2 | 354.8 | | city3 | 565.7 | +------------+------------+
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下: CREATE EXTERNAL TABLE salary ( dept STRING, -- 部⻔名称 userid string, -- 员⼯ID sal INT -- 薪⽔ ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: d1,user1,1000 d1,user2,2000 d1,user3,3000 d2,user4,4000 d2,user5,5000 示例:计算员工薪水在部门内的百分比排名。 select dept, userid, sal, percent_rank() over(partition by dept order by sal) as pr2 from salary; -- 结果分析: d1 user1 1000 0.0 -- (1-1)/(3-1)=0.0 d1 user2 2000 0.5 -- (2-1)/(3-1)=0.5 d1 user3 3000 1.0 -- (3-1)/(3-1)=1.0 d2 user4 4000 0.0 -- (1-1)/(2-1)=0.0 d2 user5 5000 1.0 -- (2-1)/(2-1)=1.0
  • 示例代码 返回example.com。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST'); 返回/over/there/index.dtb。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH'); 返回animal。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type'); 返回nose。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF'); 返回file。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL'); 返回 username@example.com:8042。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY'); 返回username。 select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 urlString 是 STRING URL链接。无效URL链接会返回报错。 partToExtract 是 STRING 取值包含:HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE和USERINFO,不区分大小写。 keyToExtract 否 STRING 当part取值为QUERY时,根据key值取出对应的Value值。
  • 示例代码 返回2023-08-22。 select next_day('2023-08-16','TU'); 返回2023-08-22。 select next_day('2023-08-16 10:54:00','TU'); 返回2023-08-23。 select next_day('2023-08-16 10:54:00','WE'); 返回NULL。 select next_day('20230816','TU'); 返回NULL。 select next_day('20230816 20:00:00',null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 start_date 是 DATE 或 STRING 代表需要处理的日期。 start_date取值为STRING类型格式时,至少要包含yyyy-mm-dd且不含多余的字符串。 格式为: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 day_of_week 是 STRING 一个星期前2个或3个字母,或者一个星期的全名。例如TU代表星期二。
  • 返回值说明 返回DOUBLE类型的值。 date1、date2非DATE或STRING类型时,返回报错,错误信息:data type mismatch。 date1、date2为DATE或STRING类型,但不符合日期值的入参格式时,返回NULL。 当date1晚于date2时,返回值为正。当date2晚于date1时,返回值为负。 当date1和date2分别对应两个月的最后一天,返回整数月;否则计算方式为date1减去date2的天数除以31天。 date1或date2值为NULL时,返回NULL。
  • 示例代码 返回0.0563172。 select months_between('2023-08-16 10:54:00', '2023-08-14 17:00:00'); 返回0.06451613。 select months_between('2023-08-16','2023-08-14'); 返回NULL。 select months_between('2023-08-16',null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date1 是 DATE 或 STRING 代表被减数。 格式为: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 date2 是 DATE 或 STRING 代表减数。 格式为: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3
  • 示例代码 计算所有商品的最低库存(items)。命令示例如下: select min(items) from warehouse; 返回结果如下: _c0 600 与group by配合使用,求每个仓库的最低库存。命令示例如下: select warehourseId, min(items) from warehouse group by warehourseId; 返回结果如下: warehouseId _c1 city1 15 city2 10 city3 19
  • 示例代码 例如 table1 是分区表,该表对应的分区为20120801和20120802,且都有数据。则以下语句中max_pt返回值为‘20120802’。DLI SQL语句会读出pt=‘20120802’分区下的数据。 命令示例如下。 select * from tablel where pt = max_pt('dbname.table1'); 等效于如下语句。 select * from table1 where pt = (select max(pt) from dbname.table1);
  • 示例代码 计算所有商品的最高库存(items)。命令示例如下: select max(items) from warehouse; 返回结果如下: _c0 900 与group by配合使用,求每个仓库的最高库存。命令示例如下: select warehourseId, max(items) from warehouse group by warehourseId; 返回结果如下: warehouseId _c1 city1 200 city2 300 city3 400
  • 示例代码 去除字符串" abc"的左边空格。命令示例如下。 返回字符串abc 。 select ltrim(' abc'); 等效于如下语句。 select trim(leading from ' abc'); leading代表去除字符串前面的空格 输入参数为NULL。命令示例如下。 返回NULL。 select ltrim(null); select ltrim('xy', null); select ltrim(null, 'xy'); 去除字符串yxlucyxx左端所有字符都在集合xy中的子串。 返回lucyxx,只要左端遇到x或者y就会被去掉。 select ltrim( 'xy','yxlucyxx'); 等效于如下语句。 select trim(leading 'xy' from 'yxlucyxx');
  • 示例代码 用字符串ZZ将字符串abcdefgh向左补足到10位。命令示例如下。 返回ZZabcdefgh。 select lpad('abcdefgh', 10, 'ZZ'); 用字符串ZZ将字符串abcdefgh向左补足到5位。命令示例如下。 返回abcde。 select lpad('abcdefgh', 5, 'ZZ'); length为0。命令示例如下。 返回空串。 select lpad('abcdefgh', 0, 'ZZ'); 任一输入参数为NULL。命令示例如下。 返回NULL。 select lpad(null ,0, 'ZZ');
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 base 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数base的格式包括浮点数格式、整数格式、字符串格式。 参数base非DOUBLE类型时,会隐式转换为DOUBLE类型后参与运算。 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 参数a非DOUBLE类型时,会隐式转换为DOUBLE类型后参与运算。
共100000条