HiveQL查询操作全解(一):基础

1、SELECT....FROM语句

SELECT是SQL中的射影算子。FROM标识了从哪个表,视图或者嵌套查询中选择记录。我们使用如下的表结构

CREATE TABLE IF NOT EXIST employees(
  name STRING,
  salary FLOAT,
  subordinates ARRAY<STRING>,
  deductions MAP<STRING,FLOAT>,
  address STRUCT<street:STRING, city:STRING,state:STRING,zip:INT>
)
PARTITIONED BY(country STRING,state STRING);

选择基本类型

SELECT name, salary FROM employees

选择集合数据类型
首先,我们来看一下如何查询数组类型的数据,数组类型的数据的数组索引时基于0的,这个和Java中是一样的,比如我们选择subordinates数组的第一个元素查询,如果数组为空数组或者索引越界,直接返回NULL,同时提取出的STRING数据类型的值将不再加引号。:

SELECT name,subordinates[0] FROM employees; 

引用MAP类型的元素,直接使用[键名]的方式,不能使用整数索引:

SELECT name, deductions["State Taxes"] FROM employees;

最后,为了引用STRUCT中的一个元素,用户可以使用“点”符号:

SELECT name, address.city FROM employees

使用列值来进行计算
用户不但可以选择表中的列,还可以使用函数调用和算数表达式来操作列值。例如,我们可以查询得到转换为答谢的雇员姓名,雇员对应的薪水、需要缴纳的联邦税收比例,以及口水之后再进行取整所得的税后薪资:

SELECT upper(name),salary, deductions["Federal Taxes"],round(salary * (1-dudctions["Federal Taxes"])) FROM employees;

Hive中支持所有典型的算术运算法,不过,如果数据类型不同,那么两种类型中值范围较小的那个数据类型将转换为其他范围更广的数据类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容