如何使用子查询从配置单元表中检索不明确的列?

时间:2018-11-16 06:58:40

标签: hive

主表:

CREATE EXTERNAL TABLE user(language STRING,snapshot_time STRING,products STRUCT<id:STRING,name:STRING>,item STRUCT<quantity:ARRAY<STRUCT<name:STRING>>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE
LOCATION '/user/input/sample';

我正在尝试将模糊的列名称“ product.name”,“ A.name”插入到user_prod_info表中。由于列名相同,因此我遇到了 q中的列引用文本模糊错误。

插入命令:

INSERT OVERWRITE TABLE user_prod_info
SELECT q.* FROM (
SELECT row_number() OVER (PARTITION BY products.id ORDER BY snapshot_time DESC) AS temp_row_num,
language,
snapshot_time,
products.id,
products.name,
A.name
FROM user as raw 
LATERAL VIEW EXPLODE(item.quantity) quantity as A
) q WHERE temp_row_num == 1;

该命令无法从特定表中检索该字段,因为我们有两个“名称”字段。一个在“产品”中,另一个在“ A”中。

我尝试为“ A.name as name1”创建别名。我能够正确插入数据。但是,一条记录存储在3行中,其中有一些空值。

我被困在这里。有人可以帮我这个忙吗

0 个答案:

没有答案