View 配置单元侧面视图,示例中配置单元表有1列作为阵列
我的用例是在配置单元中有一个表,其中一列为INT,一列为数组数据类型。我想水平显示它。简单的解释,假设您的表包含名称和资格等数据 表格内容:View 配置单元侧面视图,示例中配置单元表有1列作为阵列,view,hive,sample,query-by-example,lateral,View,Hive,Sample,Query By Example,Lateral,我的用例是在配置单元中有一个表,其中一列为INT,一列为数组数据类型。我想水平显示它。简单的解释,假设您的表包含名称和资格等数据 表格内容: Amar ["Btech","Mtech"] Amala ["Bsc","Msc","Mtech"] Akash ["Btech","Mba"] 表格创建: create table raw2(name string, qual array<string>); 创建表raw2(名称字符串,qual数组); 查询: sele
Amar ["Btech","Mtech"]
Amala ["Bsc","Msc","Mtech"]
Akash ["Btech","Mba"]
表格创建:
create table raw2(name string, qual array<string>);
创建表raw2(名称字符串,qual数组);
查询:
select name, myq from <table> lateral view explode(qual) q as myq;
选择名称,侧视图中的myq分解(qual)q作为myq;
使用名称收藏夹、int类型id、字符串类型名称和字符串类型数组的fav_song创建表
hive> CREATE TABLE Favourites
> (id INT, Name STRING, fav_song ARRAY<STRING>);
id name fav_song
1 Akshay['Rang De Basanti','Live it Up']
2奏鸣曲[《所有的星星》,《1000年》]
查询后的行将显示为:
hive> SELECT p.id,p.name,colors.my_fav_song FROM default.Favourites P
LATERAL VIEW EXPLODE(p.fav_song) fv as my_fav_song;
我的名字叫我最爱的歌
1 Akshay Range De Basanti
1阿克什尽情享受吧
2所有星星的奏鸣曲
2 Sonal 1000 YearExplode函数将采集数据类型的每个元素显示为单行
CREATE TABLE Products
(id INT, ProductName STRING, ProductColorOptions ARRAY<STRING>);
select * from products;
红色的
绿色的
但我想与其他列(如id)连接,但这会导致错误
在这种情况下,我们需要使用横向视图。横向视图为分解的列创建一个虚拟表,并与基表连接
我们不必担心虚拟表,因为它是由配置单元内部完成的
SELECT p.id,p.productname,colors.colorselection FROM default.products P
LATERAL VIEW EXPLODE(p.productcoloroptions) colors as colorselection;
我看红色的
1手表是绿色的
2件蓝色衣服
为什么在
中有colors
关键字,从默认值中选择p.id、p.name、colors.my\u fav\u song。收藏夹p横向视图分解(p.fav\u song)fv作为my\u fav\u song代码>查询?嗨,Ankur,我有相同类型的数据集,我正在尝试使用数组中的值获取多行。如果我们要将一个表连接到您最后创建的表,该怎么办?它似乎被蜂巢拒绝了
select explode(ProductColorOptions ) from products;
SELECT p.id,p.productname,colors.colorselection FROM default.products P
LATERAL VIEW EXPLODE(p.productcoloroptions) colors as colorselection;