本文主要介绍如何在SQL-Hive中使用Select From,具有一定的参考价值。有兴趣的朋友可以参考一下。希望大家看完这篇文章后收获多多。让边肖带你去了解它。
00-1010查询指定的一列或多列,命令如下:
SELECT列名1,列名2,helliphellipFROM表名;查询表中的所有字段时,可以使用*表示所有字段。星号(*)是选择所有行的快捷方式。顺序如下:
选择*从表名;如果我们想查询表t_od_use_cnt中所有的user_id和use_cnt,具体命令如下:
选择user_id,使用_ cntFROMapp.t _ od _ use _ cnt注意:app是数据库名称。如果当前查询表与当前使用的数据库一致,可以省略。
在Hive中这样写的00-1010在语法上是正确的(没有分区),但是在实际工作中很可能会给出一个错误。
由于Hive中表内数据量巨大,为了防止用户误扫描整个表,可以设置查询分区表时必须增加分区限制。例如,在这里,我们的分区字段是date_8的日期字段,工作中的表将要求我们限制必须查询的分区数据的天数。这里我们可以输入设置参数进行模拟,命令如下:
hive(app)sethive . mapred . mode;hive . mapred . mode=nonstrict ive(app)sethive . mapred . mode=strict;hive(app)sethive . mapred . mode;Hive.mapred.mode=strict然后我们重新执行上面的查询语句,出现以下错误:
hive(app)SELECTuser_id,use _ cntFROMapp.t _ od _ use _ cntFailed:语义异常[错误10041] 3360没有为别名“t _ OD _ use _ CNT”表“t _ OD _ use _ CNT”配置单元(app)预测的分区这个问题可以通过使用where语句解决,如下所示:
选择user_id,使用_ cntfrom app . t _ od _ use _ CNT where date _ 8=' 20210420 ';00-1010以上的查询语句会返回所有被查询的数据,但有时我们只需要确认表中的数据内容,或者指定行数据,比如只有100行,那么我们只需要在查询语句后添加(限制数量)。
查询表t_od_use_cnt中的前五行数据。命令如下:
选择user_id,使用_ cntfrom app . t _ od _ use _ CNT where date _ 8=20190101 limit 5;操作结果如下:
配置单元(应用程序)选择用户标识,使用
se_cnt > WHERE date_8 = 20210420 Limit 5; OK user_id use_cnt 10000 6 10001 49 10002 23 10003 1 10004 29 Time taken: 0.829 seconds, Fetched: 5 row(s) hive (app)>
04-列四则运算
在查询时可以对数值类型的字段进行加减乘除和取余等四则运算
下面我们将表t_od_use_cnt中use_cnt列和is_active列相乘得到一个新列,其他用法依次类推。
hive (app)> SELECT user_id > ,use_cnt > ,is_active > ,use_cnt * is_active > FROM app.t_od_use_cnt > WHERE date_8 = 20210420 Limit 5; OK user_id use_cnt is_active _c3 10000 6 1 6 10001 49 1 49 10002 23 1 23 10003 1 0 0 10004 29 1 29 Time taken: 0.124 seconds, Fetched: 5 row(s) hive (app)>
05-列别名
可以看到上面的例子中我们通过两个列相乘人为制造出一个新列,系统默认将其列名起为_c3。通常有必要给这些新产生的列起一个别名。已有列的列名如果含义不清晰也可以通过起别名的方式进行更改。不过别名只在本条SQL语句中生效,不影响原表中的字段名。
这里顺便介绍一下字段命名规则:
1.不能和已有字段重复
2.只能包括小写字母(a-z)、数字(0-9)、下划线(_)
3.以字母开头
4.单词之间用下划线_分割
这里我们将别名起为active_use_cnt,在列后面加 AS active_use_cnt即可。另AS可以省略,只用空格分隔别名也可以生效
hive (app)> SELECT user_id > ,use_cnt > ,is_active > ,use_cnt * is_active AS active_use_cnt > FROM app.t_od_use_cnt > WHERE date_8 = 20210420 Limit 5; OK user_id use_cnt is_active active_use_cnt 10000 6 1 6 10001 49 1 49 10002 23 1 23 10003 1 0 0 10004 29 1 29 Time taken: 0.239 seconds, Fetched: 5 row(s) hive (app)>
感谢你能够认真阅读完这篇文章,希望小编分享的“SQL-Hive中Select From怎么用”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/142068.html