hive
视图
Hive的视图
应用场景将特定的列提供给用户,保护数据隐私 用于
查询语句复杂的场景
通过隐藏子查询、连接和函数来简化查询的逻辑结构只保存定义,不存储数据 如果删除或更改基础表,则查询视图将失败 视图是只读的,不能插入或装载数据
-- 创建视图,支持 CTE, ORDER BY, LIMIT, JOIN,等
CREATE VIEW view_name AS SELECt statement;
-- 查找视图 (SHOW VIEWS 在 hive v2.2.0之后)
SHOW TABLES;
-- 查看视图定义
SHOW CREATE TABLE view_name;
-- 删除视图
DROP view_name;
--更改视图属性
ALTER VIEW view_name SET TBLPROPERTIES ('comment' = 'This is a view');
-- 更改视图定义
ALTER VIEW view_name AS SELECT statement;
explode只能是单个,如果需要多个需要
select name,wp from employee lateral view explode(work_place) work as wp ;
explode(列名):
Hive内置的表生成函数,主要用于把一行输入拆成多行。
explode(ARRAY < T> a)
将一个数组展开为多行。
返回一个带有单列(col)的行集,数组中每个元素都有一行
explode(MAP
m)
将一个映射展开为多行。返回一个带有两列(键,值)的行集,从输入映射中为每个键值对返回一行。(从Hive0.8.0起)
explode(split(word,’ |’))
将某一列名为word展开为多行,返回分割“|”后所有的值,分割后的所有值每一个都返回一行
stack(int r,T1 V1,…,Tn/r Vn)
将n个值V1,…,Vn分解为r行。每行将有n/r列,r必须是常数。
————————————————
侧视图
Outer Lateral Views(外侧视图):
OUTER关键字:即使侧视图的列没有值,output为空也会打印生成结果为null
SELECt explode(split(t.name,
','))
from t1 t;
explode函数的作用是把列转行array 与 map;
SELECt
id,colAliasName
from
t1 t
LATERAL
VIEW
explode(split(t.name,
','
)) tableAliasName
as
colAliasName
Union和Union all:
(1)Union:对两个结果集进行并集 *** 作,去除重复行,同时进行默认规则的排序。
(2)Union all:对两个结果集进行并集 *** 作,不去除重复行,不进行排序。
模糊查询
select
* from ods.ods_sjc_events_rt where event like concat
(
'%'
,
'OCR'
,
'%'
)
;
评论列表(0条)