Nak*_*Dev 4 hive sample view query-by-example lateral
我的用例是我在配置单元中有一张表,其中一列为INT,另一列为Array数据类型。我想水平显示它。
简单解释,假设你的表有姓名和资格等数据
表内容:
Amar ["Btech","Mtech"]
Amala ["Bsc","Msc","Mtech"]
Akash ["Btech","Mba"]
Run Code Online (Sandbox Code Playgroud)
表创建:
create table raw2(name string, qual array<string>);
Run Code Online (Sandbox Code Playgroud)
询问:
select name, myq from <table> lateral view explode(qual) q as myq;
Run Code Online (Sandbox Code Playgroud)
爆炸功能将集合数据类型的每个元素显示为单行。
CREATE TABLE Products
(id INT, ProductName STRING, ProductColorOptions ARRAY<STRING>);
select * from products;
Run Code Online (Sandbox Code Playgroud)
1手表[“红色”,“绿色”]
2衣服[“蓝色”,“绿色”]
3本书[“蓝色”,“绿色”,“红色”]
select explode(ProductColorOptions ) from products;
Run Code Online (Sandbox Code Playgroud)
红色
绿色
但是我想与id之类的其他列一起加入,但这会导致错误。
在这种情况下,我们需要使用横向视图。横向视图为爆炸的列创建一个虚拟表并与基表进行联接。
我们不必担心虚拟表,因为它是在内部由蜂巢完成的。
SELECT p.id,p.productname,colors.colorselection FROM default.products P
LATERAL VIEW EXPLODE(p.productcoloroptions) colors as colorselection;
Run Code Online (Sandbox Code Playgroud)
1手表红色
1手表绿色
2衣服蓝色