蜂巢侧视图,带有带有1列作为阵列的蜂巢表的示例示例

Nak*_*Dev 4 hive sample view query-by-example lateral

我的用例是我在配置单元中有一张表,其中一列为INT,另一列为Array数据类型。我想水平显示它。

Ank*_*wal 5

简单解释,假设你的表有姓名和资格等数据

表内容:

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)


Roh*_*dav 5

爆炸功能将集合数据类型的每个元素显示为单行。

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衣服蓝色