hive的查询方式有哪些

141 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

不同于hive函数那样有明确的功能定义和使用方法,hive的查询方式也是有很多种,没有特定的函数或者方法名称,但是大致可以归纳为以下几种形式,下面我就一一来介绍一下,从简单到复杂的过程。

首先最简单的方式就是select语句啦,


select * from table_A ;

这应该是最简单的查询语句了,是把表名称为table_A的所有字段都查询出来,这样写肯定对性能影响很大,我们当然是不建议这样写的。

第二种查询方式就是在上面的基础上增加指定查询的列。


select a,b,x from table_A ;

上面例子就是将table_A中的a,b,x三列的数据查询出来。这样不会全表查询,也是提高了性能。

有时候变幻多种查询方式,目的可能就是为了提高查询性能,或者减少报错。

我们继续在上面的sql基础上进行改良,增加排序和行数的限制,可以想下面这样去写。


select a,b,c from tableA order by time limit 1000;

这样就将查询到的结果按照time升序,并且限制只会显示前1000条数据。

这两者经常合并使用,在查询最新数据的时候非常实用。

上面的是升序,降序的写法是 order by time desc。

下面是在字段查询中增加函数进行数据处理的方式,首先是判断语句形式。


select ...case when then from tableA

如果查询到某个字段是有很多枚举值,并且需要翻译成中文或者其他内容的,可以套用下面这样的格式。


select
​
a as a
​
,b as b
​
,casewhen type=1 then '是'when type=0 then '否'else '未知'end as c
​
from tableA

这个case ... when ... then ... 的函数使用可以是在多枚举值的情况下,或者有时候也可以作为条件判断的用法,就是根据不同的条件输出不同的结果,当然依据的还是要某个参数的值,也可以用作判断是否为null,来设置默认值,用法很多,就看你的实际需求了。