Hive 检查时间是否在一组开始和结束时间内

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的开始和结束时间有关

例如,表A和表B有两个表

表A架构如下所示

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