I have a problem with a table.I currently have this empty hours table and I need to fill it automatically with a query in Hiveql. The idea is to generate:
- In the first column “key” values between 000000 and 235959
- In the second column “hours” values between 00:00:00 and 23:59:59.
Now my table is empty:
x
KEY | HOURS |
Future table that I need will be:
KEY | HOURS |
1 00:00:00
2 00:00:01
235959 23:59:59
How can I do this?
Advertisement
Answer
set hivevar:end=23*60*60+59*60+59;--sequence end in seconds
with seq as(
select posexplode(split(space((${end})),' ')) as (i,x)
)
select concat(HH,mm,ss) as key, concat_ws(':',HH,mm,ss) as hours
from
(
select i, --seconds, you can use it also as a key
lpad(floor(i/3600),2,'0') HH, lpad(floor(i%3600/60),2,'0') mm, lpad(floor(i%3600%60),2,'0') ss
from seq
)s;
Result:
first rows skipped
235954 23:59:54
235955 23:59:55
235956 23:59:56
235957 23:59:57
235958 23:59:58
235959 23:59:59
Time taken: 6.737 seconds, Fetched: 86400 row(s)