Hive 检查时间是否在一组开始和结束时间内
我试图找出某个时间是否与两个不同表之间每个id的开始和结束时间有关 例如,表A和表B有两个表 表A架构如下所示Hive 检查时间是否在一组开始和结束时间内,hive,hiveql,Hive,Hiveql,我试图找出某个时间是否与两个不同表之间每个id的开始和结束时间有关 例如,表A和表B有两个表 表A架构如下所示 ID | timestamp | status-它保存每个时间单位(比如每分钟)的信息 表B架构如下所示 ID |开始|结束|时间戳——但同一日期的每个ID都有多个条目 我想知道表A中的时间戳是否位于表B中的开始时间戳或结束时间戳之间 预期结果 表A ID | timestamp | status 1 | 300 | ABC 1 | 600 | ABC 1
ID | timestamp | status
-它保存每个时间单位(比如每分钟)的信息
表B架构如下所示
ID |开始|结束|时间戳
——但同一日期的每个ID都有多个条目
我想知道表A中的时间戳是否位于表B中的开始时间戳或结束时间戳之间
预期结果
表A
ID | timestamp | status
1 | 300 | ABC
1 | 600 | ABC
1 | 900 | ABC
1 | 1200 | DEF
...
表B
ID | Start_timestamp | End_timestamp
1 | 100 | 400
1 | 700 | 1000
输出
ID | timestamp | status | Flag
1 | 300 | ABC | True
1 | 600 | ABC | False
1 | 900 | ABC | True
1 | 1200 | DEF | False
这可以通过
左连接和条件聚合来完成
select a.id,a.timestamp,a.status
,max(case when a.timestamp between b.start_time and b.end_time then 'True' else 'False' end) as t_f_flag
from tblA a
left join tblB b on a.id = b.id
group by a.id,a.timestamp,a.status