hive的内置函数

hive的内置函数,第1张

hive的内置函数 hive的内置函数 1. 数学函数
  • 四舍五入
    select round(3.1415926);
    

    select round(3.1415926, 3);
    

  • 向下取整
    select floor(3.1415926);
    

  • 向上取整
    select ceil(3.1415926);
    

  • 0-1范围内的随机数
    select rand();
    

  • rand(int seed),指定种子将会返回固定的随机数
    select rand(5);
    

  • 幂运算函数 pow(2,3) 2的三次幂
    select pow(2, 3);
    

  • 绝对值运算
    select abs(-3.141592657);
    

2.字符串函数
  • 字符串长度函数
    select length("cccddd");
    

  • 字符串翻转函数
    select reverse("abcdefg");
    
  • 字符串连接函数
    select concat("hello", "world");
    

  • 带分隔符的字符串连接函数
    select concat_ws(",", "aaa", "bbb", "ccc");
    

  • 字符串截取函数:substrsubstring
    select substr("abcdefg", 2);
    

    select substr("abcdefg", 2, 3);
    

    select substr("abcdefg", -2);
    

    select substr("abcdefg", -5, 3);
    

  • 字符串大小写转换
    select lower("ABCD");
    select lcase("ABCd");
    

    select ucase("abcd");
    select upper("abCde");
    

  • 去除字符串两边空格
    select trim("  hahah a  ");
    

  • 去除字符串左边空格
    select ltrim("  hahah a  ");
    

  • 去除字符串右边空格
    select rtrim("  hahah a  ");
    

  • 正则表达式替换函数:regexp_replace
    select regexp_replace("foobar", "oo|ar", "dd");
    

  • url解析函数 返回URL中指定的部分。
    • partToExtract的有效值为 : HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.
    select parse_url("https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000",'HOST');
    

    select parse_url("https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000", "PATH");
    

    select parse_url("https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000", "QUERY", "tn");
    

  • 字符串分割
    select split("ab。cd。ef。d", "。");
    

    select split("ab.cd.ef.d", "\.");
    

2.日期函数
  • 获取时间戳
    select unix_timestamp();
    

  • unix时间戳转日期
    select from_unixtime(1637305723, 'yyyy-MM-dd HH:mm:ss');
    

  • 日期转时间戳 默认格式:yyyy-MM-dd HH:mm:ss
    select unix_timestamp("2021-11-19 15:08:43");
    

  • 指定格式日期转时间戳
    select unix_timestamp("2021 11 19 15:08:43", "yyyy MM dd HH:mm:ss");
    

  • 时间格式化函数
    select date_format("2021-1-9 13:1:2", "yyyy-MM-dd HH:mm:ss");
    

  • 时间转日期
    select to_date("2021-11-20 21:46:20");
    

  • 获取日期中的年、月、日、时、分、秒
    select year("2021-11-20 21:46:20");
    select month("2021-11-20 21:46:20");
    select day("2021-11-20 21:46:20");
    select hour("2021-11-20 21:46:20");
    select minute("2021-11-20 21:46:20");
    select second("2021-11-20 21:46:20");
    
  • 获取日期在本年内的第几周
    select weekofyear("2021-11-20 21:46:20");
    

  • 日期比较函数 datediff(a,b) 返回a-b的天数
    select datediff("2021-11-20 21:46:20", "2021-12-20 21:46:20");
    

  • 日期加减
    select date_add('2021-11-20', 10);
    

    select date_sub('2021-11-20', 10);
    

4.条件函数
  • 条件函数 判断结果为true时返回第二个参数,条件为false或者为null返回第三个参数
    select if(1=2, 100, 200);
    
    select if(null, 100, 200);
    
  • case when
    select case
    when 1=2 then "hello"
    when 2=2 then "world"
    else "emmm"
    end ;
    
5. 转换函数
  • cast强转函数
    select cast(12.35 as int);
    
    select cast("2021-11-20" as date);
    
6.行转列函数

```sql
-- collect_set将某字段的值进行去重汇总
select deptno, concat_ws("|", collect_set(ename)) from emp group by deptno;
	-- collect_list将某字段的值进行汇总,不去重
select deptno, concat_ws("|", collect_list(ename)) from emp group by deptno;
```

7.表生成函数
  • explode 爆炸函数

    初始数据

    select explode(names) from emp2;
    

  • LATERAL VIEW侧视图
    select deptno,name,names from emp2 lateral view explode(names) tmp_tb as name;
    

  • reflect函数可以支持在sql中调用java中的自带函数

    select reflect("java.lang.Math", "max", col1, col2) from test_udf;
    

8.开窗函数

飞机票–>hive开窗函数

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5572921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存