gpt4 book ai didi

sql - Hive - Hive 中的 Unpivot 功能

转载 作者:行者123 更新时间:2023-12-03 22:50:38 24 4
gpt4 key购买 nike

我有两个表如下:

表A

userid | code | code_name | property_id
0001 | 1 | apple_id | Y1234
0031 | 4 | mango_id | G4567
0008 | 3 | grape_id | H1209
00013 | 2 | peach_id | Z5643

表 2
apple_id | mango_id | grape_id | peach_id | new_id
Y1234 | R1890 | | | N456098
| G4567 | | B3490 | N002345
T3336 | | H1209 | F3467 | N129087
| D7865 | J6543 | Z5643 | N109876

所需的结果表
userid | new_id
0001 | N456098
0031 | N002345
0008 | N129087
00013 | N109876

使用表A中的code_name,我想从表B中的表A中找到相应的property_id。基本上,匹配表B中的列名。目的是获得相应的new_id。

苹果、芒果、葡萄和桃的 ID 可以相同。但是,new_id 值将是唯一的。

这在 Hive 中可能吗? Hive 中似乎没有任何反透视/透视功能。

任何帮助都会很棒。谢谢!

最佳答案

每当我想在 Hive 中旋转一个表时,我都会将 key:value 对收集到一个映射中,然后在下一级引用每个键,创建新列。这与此相反。

查询 :

select a.userid, y.new_id
from (
select new_id, fruit_name, fruit_code
from (
select new_id, map("apple_id", apple_id
, "mango_id", mango_id
, "grape_id", grape_id
, "peach_id", peach_id) as fruit_map
from table_2 ) x
lateral view explode(fruit_map) exptbl1 as fruit_name, fruit_code ) y
join table_A a
on (y.fruit_code=a.property_id)

输出 :
0001    N456098
0031 N002345
0008 N129087
00013 N109876

关于sql - Hive - Hive 中的 Unpivot 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32621970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com