配置单元 - 为不同的列值插入行

时间:2018-01-13 13:43:13

标签: hadoop hive

老实说,我不知道如何简单地在标题行上描述问题而不是示例。

我有一个包含两列的配置单元表:ID和日期

 ID      Date
 31    01-01-2017
 31    01-02-2017
 31    01-03-2017
123    01-01-2017
123    01-01-2017
...

在此表中,我想包含另一个小时,例如下面的

 ID      Date        Hour
 31    01-01-2017      00
 31    01-01-2017      01
 31    01-01-2017      02
 31    01-01-2017      03
 31    01-01-2017      04
...
 31    01-01-2017      23
 31    01-02-2017      00
 31    01-02-2017      01
...

基本上,对于每一行,我想在00到23之间添加一小时的值列。 可以使用配置单元实现吗? 非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以创建一个临时表,其中包含0到23之间的条目,并与您拥有的表进行交叉连接。或者你可以利用CTE函数在CTE表中输入0到23的条目,然后用它进行交叉连接。

一个例子:

with temp as (
select 0 hour union all
select 1 hour union all
select 2 hour union all
select 3 hour union all
select 4 hour union all
select 5 hour union all
select 6 hour union all
select 7 hour union all
select 8 hour union all
select 9 hour union all
select 10 hour union all
select 11 hour union all
select 12 hour union all
select 13 hour union all
select 14 hour union all
select 15 hour union all
select 16 hour union all
select 17 hour union all
select 18 hour union all
select 19 hour union all
select 20 hour union all
select 21 hour union all
select 22 hour union all
select 23 hour
)
select * from table join temp

您还可以将结果插入表中以保留结果。希望它有所帮助