hive-在不创建外部表或使用连接的情况下,为每个日期选择不同的唯一ID

xuo3flqw  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(358)

我正在处理一个包含以下列的数据集:

unique_ID       Date
a               2018_09_08
a               2018_09_18
a               2018_09_28
d               2018_09_08

我希望选择在所有三个日期(即2018年9月8日、2018年9月18日和2018年9月28日)出现的唯一的\u id。
我的输出应该只是“a”。
这个问题有一个长期的解决方案-提取每个日期的唯一ID,并在所有三个表上创建外部表,然后在三个表上使用join来获取所有三个日期的唯一ID。我认为应该有一个更好的解决方案,因为我们只有3个日期在这种情况下,可能会上升以后,所以我正在寻找一个更普遍的解决方案。
这是我写的问题- select distinct(unique_ID) from table_name where Date = '2018_09_08' and Date = '2018_09_18' and Date = '2018_09_28' 返回null。
我还试图编写一个子查询,但我怀疑hive在这种情况下是否支持这样的子查询。以下是我写的:

select count(distinct(unique_ID)) from (
(select distinct(unique_ID) from table_name where Date = '2018_09_08') a
union all
(select distinct(unique_ID) from table_name where Date = '2018_09_18') b
union all
(select distinct(unique_ID) from table_name where Date = '2018_09_28') c
);

我得到以下解析错误: FAILED: ParseException line 3:0 missing ) at 'union' near ')' line 4:87 missing EOF at 'b' near ')' 在这种情况下,我们如何获得唯一的\u id?

mo49yndu

mo49yndu1#

这可以通过 group by 以及 having .

select unique_id,count(distinct date)
from tbl
where date in ('2018_09_08','2018_09_18','2018_09_28')
group by id 
having count(distinct date) = 3

相关问题