hadoop—当表的数据在指定范围内时返回布尔值

pw9qyyiw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(256)

我需要一个查询返回布尔值时,有表中的数据在给定的范围。
假定表customer[用户id、名称、日期、购买的产品]
我想做的是:
存在时选择案例(
从客户处选择日期、计数(*)
其中日期介于“2015-08-03”和“2015-08-05”之间
)
然后铸造(1个钻头)
else case(0为位)end;
这在“选择日期”附近引发了一个错误。然而,奇怪的是内部查询运行得非常好。
我想知道我是否遗漏了什么!

xhv8bpkk

xhv8bpkk1#

有什么更直截了当的事吗。

select case when count(*) >0 then 1 else 0 end as HIT
from ... where ...

这样,您就不必担心hive假设exists意味着一个相关的子查询,自动转换为mapjoin,即一个java hashmap被洗牌到第二行mappers作业,等等。这不完全是您的用例。
那么,计算准确的计数就没有用了,因此可以根据需要对查询进行细化

select case when count(*) >0 then 1 else 0 end as HIT
from
 (select ... from ... where ... limit 1) X

[编辑]配置单元中没有“位”数据类型。但是如果您只需要一个返回标志(零/非零),那么默认的“int”应该是可以的

相关问题