Hive 配置单元-在不创建外部表或使用联接的情况下,为每个日期选择不同的唯一ID
我正在处理具有以下列的数据集:Hive 配置单元-在不创建外部表或使用联接的情况下,为每个日期选择不同的唯一ID,hive,bigdata,hiveql,hadoop2,Hive,Bigdata,Hiveql,Hadoop2,我正在处理具有以下列的数据集: 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日)发生的那些独特的识别码 我的输出应该是“a” 这个问题有一个很长的解决方案-提取每个日期的唯一ID,并在所有三个ID
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日)发生的那些独特的识别码
我的输出应该是“a”
这个问题有一个很长的解决方案-提取每个日期的唯一ID,并在所有三个ID上创建外部表,然后在三个表上使用join来获取所有三个日期的唯一ID。我认为应该有一个更好的解决方案,因为在这种情况下,我们只有3个日期,可能会在以后出现,所以我正在寻找一个更普遍的解决方案
下面是我编写的查询-从表名称中选择不同的(唯一的\u ID),其中Date='2018\u 09\u 08'和Date='2018\u 09\u 18'和Date='2018\u 09\u 28'
,返回空值
我还试图编写一个子查询,但我怀疑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
);
我得到了以下解析错误:失败:ParseException第3:0行缺失(位于“union”附近)、“第4:87行缺失EOF(位于“b”附近”)”
在这种情况下,我们如何获得唯一的ID?这可以通过
分组方式和拥有来实现
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
这可以通过分组方式
和拥有
来实现
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
您是否尝试过使用或代替,并且?或
将为所有三天的总和提供不同的唯一\u ID。因此,在上述情况下,它会给我a和b,而我只想得到a,因为这在所有三个日期中都很常见。您是否尝试过或替代了,并且?或
会为所有三天的组合提供不同的唯一ID。因此,在上面的例子中,我会得到a和b,而我只想得到a,因为这在所有三次约会中都很常见。我昨天自己得到的…忘了发布答案…这正是我所做的!谢谢你的努力,我真的很感激。我昨天自己也收到了…忘了发布答案…这正是我所做的!谢谢你的努力,我真的很感激。