在 impala/hive 上将单行转换为 2 行
convert a single row into 2 rows on impala/hive
我有一个巨大的 table,其中包含以下格式的数百万 rows/IDs。
ID date bor1_key bor1_fico04 bor1_fico08 bor2_key bor2_fico04 bor2_fico08
A 202109 00657B187TH8 800 832 07T5O90Y009T 789 823
我需要将其转换为以下格式,以便值位于 2 行中,如下所示。
ID date rownum key fico04 fico08
A 202109 2 07T5O90Y009T 789 823
A 202109 1 00657B187TH8 800 832
你能帮我查询 impala/hive 来解决这个问题吗?非常感谢。
我认为一种方法是:
select
d.ID, d.date, n.n as rownum,
case
when n.n = 1 then d.bor1_key
else d.bor2_key
end as key,
case
when n.n = 1 then d.bor1_fico04
else d.bor2_fico04
end as fico04,
case
when n.n = 1 then d.bor1_fico08
else d.bor2_fico08
end as fico08
from your_data d
/* duplicate the results */
left join (select 1 as n union all select 2 as n) n
on 1=1
我有一个巨大的 table,其中包含以下格式的数百万 rows/IDs。
ID date bor1_key bor1_fico04 bor1_fico08 bor2_key bor2_fico04 bor2_fico08
A 202109 00657B187TH8 800 832 07T5O90Y009T 789 823
我需要将其转换为以下格式,以便值位于 2 行中,如下所示。
ID date rownum key fico04 fico08
A 202109 2 07T5O90Y009T 789 823
A 202109 1 00657B187TH8 800 832
你能帮我查询 impala/hive 来解决这个问题吗?非常感谢。
我认为一种方法是:
select
d.ID, d.date, n.n as rownum,
case
when n.n = 1 then d.bor1_key
else d.bor2_key
end as key,
case
when n.n = 1 then d.bor1_fico04
else d.bor2_fico04
end as fico04,
case
when n.n = 1 then d.bor1_fico08
else d.bor2_fico08
end as fico08
from your_data d
/* duplicate the results */
left join (select 1 as n union all select 2 as n) n
on 1=1