在配置单元中只筛选周日和周末

monwx1rj  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(433)

我有一个名为“timestamp”的列,我只想在一个查询中过滤工作日数据,在hive的另一个查询中过滤周末数据
时间戳

2018-03-12 15:30:00.0 --Monday
2018-03-13 15:30:00.0 --Tuesday
2018-03-14 15:30:00.0 --Wednesday
2018-03-15 15:30:00.0 --Thursday
2018-03-16 15:30:00.0 --Friday
2018-03-17 15:30:00.0 --Saturday
2018-03-18 15:30:00.0 --Sunday
2018-03-19 15:30:00.0 --Monday

我想要的结果是

2018-03-12 15:30:00.0 --Monday
2018-03-13 15:30:00.0 --Tuesday
2018-03-14 15:30:00.0 --Wednesday
2018-03-15 15:30:00.0 --Thursday
2018-03-16 15:30:00.0 --Friday
2018-03-19 15:30:00.0 --Monday

这不是我的强项。
谢谢!

csga3l58

csga3l581#

desc datetoday;
OK
date1                   timestamp

select * from datetoday;
OK
2018-03-12 15:30:00
2018-03-13 15:30:00
2018-03-14 15:30:00
2018-03-15 15:30:00
2018-03-16 15:30:00
2018-03-17 15:30:00
2018-03-18 15:30:00
2018-03-19 15:30:00
Time taken: 0.101 seconds, Fetched: 8 row(s)
hive> select date1,from_unixtime(unix_timestamp(date1,'yyyy-mm-dd'),'E') from datetoday;
OK
2018-03-12 15:30:00 Mon
2018-03-13 15:30:00 Tue
2018-03-14 15:30:00 Wed
2018-03-15 15:30:00 Thu
2018-03-16 15:30:00 Fri
2018-03-17 15:30:00 Sat
2018-03-18 15:30:00 Sun
2018-03-19 15:30:00 Mon
Time taken: 0.095 seconds, Fetched: 8 row(s)
qhhrdooz

qhhrdooz2#

在hive中,您可以使用 unix_timestamp ,和 from_unixtime 自定义项。
所以首先你要知道天的名字

from_unixtime(unix_timestamp(col), 'EEE') as days

如果你想知道你可以用的天数的全称 EEEE 然后你就可以过滤了

where days != "Sat" or days != "Sun"
lzfw57am

lzfw57am3#

你可以和我一起玩 from_unixtime 以及 unix_timestamp 这将返回星期几:

select from_unixtime(unix_timestamp('2018-03-12 15:30:00.0'), 'E')

您的完整查询如下所示:

select * from mytable where from_unixtime(unix_timestamp(time_stamp), 'E') in ('Mon', 'Tue', ...) ;

下面是hive:link中日期函数的完整描述

相关问题