美文网首页
hive查询

hive查询

作者: echolvan | 来源:发表于2020-01-10 23:06 被阅读0次

hive很大部分和sql语法一致。这里就介绍hive特有的(会有的是sql里的内容)
在hive中有数据表是分区表,在分区表中,查询一定要用where条件语句对分区字段进行限制

执行顺序
from → where → group by → having → select → order by

优先级 命令
1 FROM <left table>
2 ON <join condition>
3 JOIN
4 WHERE
5 GROUP BY
6 WITH
7 HAVING<having condition>
8 SELECT
9 DISTINCT
10 ORDER BY
11 LIMIT

常用函数

如何把时间戳转换为日期?

from_unixtime(timestamp, format_str)
eg:from_unixtime(1983686556, 'yyyy-MM-dd hh:mm:ss')

将日期转换为时间戳

unix_timestamp(date_str)

计算时间间隔

datediff(string enddate, string startdate)
结束日期减去开始日期的天数

日期增加函数

date_add(string startdate, int days)

日期减少函数

date_sub(string startdate, int days)

条件函数

case when

-- 案例:统计用户每个年龄段人数
select 
  case when age<20 then '<20' 
          when age>=20 and age<30 then '20-30'
          when age>=30 and age<40 then '30-40'
          else '40<' end as age_type,
   count(distinct user_id) user_num
   from user_info
   group by 
      case when age<20 then '<20'
              when age>=20 and age<30 then '20-30'
              when age>=30 and age<40 then '30-40'
             else '40<' end;

在上面这个案例中一定要注意select中的case when语句一定要和group by下的一致。
if

select sex,
      if(level>5, '高级用户', '普通用户') as level_type,
      count(distinct user_id) user_num
from user_info
      group by sex,
      if(level>5, '高级用户', '普通用户');

字符串函数

substr(str raw_string, int start, int end)
如果不指定截取长度,则从开始一直截取到最后!

-- 案例需求:每个月激活的用户数
select substr(firstactivetime, 1, 7) as month, count(distinct user_id) user_num
from user_info
group by substr(firstactivetime, 1, 7);

如果我们是一个json字符串怎么办?
get_json_object(str raw_string, '$.key')

-- 不同手机品牌的用户数
select get_json_object(extra1, '$.phonebrand') as phone_brand,
count(distinct user_id) user_num
from user_info
group by get_json_object(extra1, '$.phonebrand');

如何取出map类型的数据呢

案例如上题一致

select extra2['phonebrand'] as phone_brand, count(distinct user_id) user_num
from user_info
group by extra2['phonebrand'];

取map就像取python里的字典一样

表连接查询和sql中一致

相关文章

  • Hive简介

    1. Hive提供了一个被称为hive查询语言的的SQL方言,来查询存储在Hadoop集群中的数据。 Hive可以...

  • Hive编程指南读书笔记0001

    Hive概述 1.Hive提供了一个被称为Hive查询语言(简称HiveQL或HQL)的SQL方言,来查询存储在H...

  • Hive进阶

    hive配置,命令 hive查询显示列名 hive默认分隔符 \001 hive命令行中查看当前hive环境变量 ...

  • 大数据开发之Hive篇5-Hive数据查询语言

    备注:Hive 版本 2.1.1 一.Hive SELECT(数据查询语言)概述 select语句是Hive中使用...

  • hive基础语法

    目录 Hive安装和启动 Hive表操作-分区表 Hive表操作-复杂类型操作 Hive 查询语句 Zepplin...

  • Hive高级查询

    Hive高级查询 查询操作group by、Order by 、Join 、distribute by 、Sort...

  • 使用presto数据库在字符数字比较中遇到的坑

    1.事情的始末 公司的sql查询平台提供了HIVE和Presto两种查询引擎来查询hive中的数据,由于prest...

  • spark sql快速入门

    常用的sql查询引擎 hive,impala,hive on spark,presto(京东),drill(支持h...

  • Hive查询

    1、Select 注意:(1)SQL 语言大小写不敏感。(2)SQL 可以写在一行或者多行(3)关键字不能被缩写也...

  • hive查询

    hive很大部分和sql语法一致。这里就介绍hive特有的(会有的是sql里的内容)在hive中有数据表是分区表,...

网友评论

      本文标题:hive查询

      本文链接:https://www.haomeiwen.com/subject/unfuactx.html