trick:

1.能不用distinct去重,就不用它,可以考虑使用group by;

函数汇总:

1.求日期时间差:

datediff(时间A,时间B),输入是字符串类型,因此用单引号'';输出是int类型。

例子:select datediff('2018-06-06','2018-05-06')

结果:31

hive中还要一个日期前推n天的函数,得到的还是日期格式的时间:date_sub(日期,前推的时间),例子:

select date_sub('2018-08-23',1)

得到的结果是‘2018-08-22’。

两种日期的转换:dt = '20190408',partition_date = '2019-04-08'

从partition_date到dt:date2datekey('partition_date'),反过来用datekey2datek('dt')

select date2datekey('2019-04-08')

2.求星期几:pmod()

pmod(datediff(partition_date,'2018-05-06'),7)

3.根据时间戳求对应的日期:

from_unixtime(时间戳)。这里的时间戳包含两种形式:一种是10位,直接作为from_unixtime的输入就好,一类是13位,这时需要除以1000.返回值是'2018-06-02'字样的日期。

from_unixtime(timestamp)

4.获取小时:

hour()

hour(from_unixtime(order_add_timestamp))

5.字符串中查找字符:

instr( string1, string2, start_position,nth_appearance ),
 string1:源字符串,要在此字符串中查找。
 string2:要在string1中查找的字符串 。
 start_position:代表string1 的哪个位置开始查找。

instr(weekday_unavailable,'5')

6.拆分字符串split()

split('192.168.0.1','\\.')

得到的结果:

["192","168","0","1"]

需要注意的是

当然当split包含在 "" 之中时 需要加4个\

如 hive -e "....  split('192.168.0.1','\\\\.') ... "  不然得到的值是null

同样的 | 等特殊符号也需要做类似 处理。

7. 连接字段的函数:concat()

用法:concat(string s1, string s2, string s3)
这个函数能够把字符串类型的数据连接起来,连接的某个元素可以是列值。
如 concat( name, ':', score) 就相当于把name列和score列用逗号连接起来了。

8. 强制转换类型函数:cast()

用法:cast(value AS TYPE)
功能:将某个列的值显示的转化为某个类型
例子:cast(score as string ) 将double类型的数据转化为了String类型

9. 设置固定连接符号的连接字段的函数:contact_ws()

9.1去重collect_set()

用法:contact_ws(seperator, string s1, string s2...)
功能:制定分隔符将多个字符串连接起来

使用concat_ws()和collect_set()进行合并行
将上面列表中一个user可能会占用多行转换为每个user占一行的目标表格式,实际是“列转行”

select user,concat_ws(',',collect_set(concat(order_type,'(',order_number,')')))  order from table group by user

其中 order是别名

collect_set的作用:

(1)去重,对group by后面的user进行去重【划重点,很重要,在某公司的组件上,不去重,不能运行】

(2)对group by以后属于同一user的形成一个集合,结合concat_ws对集合中元素使用,进行分隔形成字符串

10.组内排序函数:row_number()

用法:select COLUMN_A,COLUMN_B,
row_number() OVER (partition BY COLUMN_A ORDER BY COLUMN_B ASC/DESC) rn
from table

功能:组内排序

详情参考:https://blog.csdn.net/pearl8899/article/details/83144224

11.组内连接各个字段的函数:group_concat

用法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

功能:将有相同key的记录中的其他字段组合起来,自动连接为一个字段,该字段中的每一个元素都是同一个意思,具有相同的key。

例子:

  1. select * from aa;

+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+

select id,group_concat(name) from aa group by id;

+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)

12.返回第一个非null的参数,Coalesce函数

用法:COALESCE ( expression [ ,...n ] ),返回其参数中第一个非空表达式

举例:SELECT COALESCE(NULL, NULL, GETDATE())

解释:由于两个参数都为null,所以返回getdate()函数的值,也就是当前时间。即返回第一个非空的值。由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值。如果里面都是null,则会报错。

13.将字符串转化为map的格式,函数str_to_map

用法:str_to_map(text[, delimiter1, delimiter2])

Splits text into key-value pairs using two delimiters. Delimiter1 separates text into K-V pairs, and Delimiter2 splits each K-V pair. Default delimiters are ',' for delimiter1 and '=' for delimiter2.

hive>

> select str_to_map('aaa:11&bbb:22', '&', ':')
    > from tmp.tmp_jzl_20140725_test11;
OK

{"bbb":"22","aaa":"11"}

案例2:

hive> select str_to_map('aaa:11&bbb:22', '&', ':')['aaa']
    > from tmp.tmp_jzl_20140725_test11;

14 删除1年前的数据分区

alter table app.test drop if exists partition(dt='$now.$now.delta(365).datekey');

15   get_json_object(AAA, '$.XXX')

解析json格式的字段,AAA={"DIB":"249.0","DIe3":"179.0"}   ,

select  get_json_object(AAA, '$.DIe3')

from aaa.xxxx

out:179.0

16 size()计算数组长度

17 length()计算字符串的长度

Hive常用函数总结(datediff、pmod、from_unixtime、instr、split、concat、cast、contact_ws、collect_set、row_numb)相关推荐

  1. hive常用函数(一)

    hive常用函数一般分为下面几个部分: 算数运算符:+,- ,*, / 关系运算符:== , <>(不等于) , > , >= , < , <= 逻辑运算符:and ...

  2. Hive常用函数大全一览

    Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...

  3. 最详细的HIve常用函数整理及案例演示

    Hive常用函数 一.测试数据集 1.1 测试数据集: 1.2 结果展示 二.常用函数 2.1 关系运算 2.1.1 常见关系运算符 2.1.2 空值判断 2.1.3 非空判断 2.1.4 LIKE ...

  4. HIVE 常用函数总结

    HIVE 常用函数总结 hive 函数比较多,之前总是随用随查,今天把常用的函数总结一下,以后方便查阅. 本文主要涉及以下几个大面: 1.Hive函数介绍以及内置函数查看 内容较多,见<Hive ...

  5. Hive常用函数 - abs

    Hive常用函数 - abs 官方解释 abs(x) - returns the absolute value of x 个人理解 就是返回函数括号内数字的绝对值. 想要获取该数的绝对值的时候就用这个 ...

  6. Hive常用函数(日期函数,取整函数,字符串操作函数,集合操作函数)

    常用函数 常用日期函数 常用取整函数 常用字符串操作函数 集合操作函数 多维分析 常用日期函数 unix_timestamp:返回当前或指定时间的时间戳 select unix_timestamp() ...

  7. Hive常用函数、列转行与行转列、开窗函数、UDF、UDTF

    Hive函数.开窗函数.UDF.UDTF 1.系统内置函数 2.常用函数 2.1.关系运算 2.2.数值运算 2.3.条件函数 2.4.日期函数 2.5.字符串函数 2.6.Hive求WordCoun ...

  8. Hive常用函数大全

    目录 第1章 算数运算 1.1 加法: + 1.2 减法: - 1.3 乘法: * 1.4 除法: / 1.5 取余: % 1.6 位与: & 1.7 位或: | 1.8 位异或: ^ 1.9 ...

  9. hive中如何把13位转化为时间_重要知识点收藏 | Hive常用函数大全

    关系运算 1.等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive>select 1 from lxw_du ...

最新文章

  1. Angularjs集成第三方js插件之Uploadify
  2. tensorflow从入门到精通100讲(二)-IRIS数据集应用实战
  3. Prompt-based Language Models:模版增强语言模型小结
  4. Hologres揭秘:深度解析高效率分布式查询引擎
  5. 腾讯副总裁姚星:腾讯AI Lab将致力打造通往AGI之路
  6. 给其他账户访问mysql的权限,将postgresql数据库的权限授予其他用户
  7. python 线程的使用
  8. 使用Service Installer在.NET Core中配置依赖注入而无需任何代码
  9. CSS可见格式化模型
  10. python代码申请软件著作权_python自动化生成软件著作权的源代码
  11. IEC104 规约详细解读(一) 协议结构
  12. 如何html设置下载的字体呢?
  13. 微软必应词典案例分析
  14. SOP封装的后缀字母L M N都代表什么意思?
  15. Excel常用电子表格公式大全
  16. 计算机管理没有Android手机项,电脑没有手机驱动各品牌解决办法
  17. linux下运行icem脚本,肿么安装linux版的icem
  18. High-Resolution Net(HRNet) 论文笔记
  19. k武装匪徒强化学习入门课
  20. 贴片陶瓷电容的NPO、C0G、X7R、X5R、Y5V、Z5U区别

热门文章

  1. C++调用python,并抓取每日一句名言
  2. 信任用苹果企业证书发布的app证书
  3. 创业公司如何制定员工股份和股权的分配
  4. py229基于python的网上咖啡商城#毕业设计
  5. 细说jbd(journal-block-device) 源码分析
  6. NBA季后赛历史得分榜
  7. 在项目甘特图找到你想要的答案
  8. OGG dblogin错误Unrecognized parameter (SOURCEDB), expected USERID.
  9. 2021-2027全球及中国泳池水监测设备行业研究及十四五规划分析报告
  10. 2020年焊工(技师)多少分及格及焊工(技师)复审考试