我知道有很多关于这个主题的帖子,但似乎都没有适用。所以我会尽量做到描述性的。我正在尝试创建一个对象,该对象计算查看,导出和评论的次数。在我看来,首先查询必须找到对象,然后它必须从Impala DB中提取记录(行)计数。
它从两个系统之一检索此信息,' sys_a'或者' sys_b'。 所以在我的半伪代码中:
select object, sum(case when action = 'viewed' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) viewCount,
sum(case when action = 'exported' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) exportCount,
sum(case when action = 'commented' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) commentCount
from events;
不幸的是,当我在我的events
表中有重复的导出对象时,我知道我的所有计数都是0。
换句话说 - 我的对象3421AA2B已导出13次,但仍然有0。 我知道这个,因为如果我做一个简单的
select count(*)
from events
where object = '3421AA2B' and action = 'exported' and (system = 'sys_a' or system = 'sys_b');
我的计数显示为13。
答案 0 :(得分:2)
您在system =
声明中忘记了or
...
select object, sum(case when action = 'viewed' and (system = 'sys_a' or system ='sys_b') then 1 else 0 end) viewCount,
sum(case when action = 'exported' and (system = 'sys_a' or system ='sys_b') then 1 else 0 end) exportCount,
sum(case when action = 'commented' and (system = 'sys_a' or system ='sys_b') then 1 else 0 end) commentCount from events;
检查案例陈述输出:
SELECT object,
case when action = 'viewed' then 1 else 0 end as view,
case when action = 'exported' then 1 else 0 end as export,
case when action = 'commented' then 1 else 0 end as comment
FROM events
WHERE system = 'sys_a' OR system = 'sys_b'
我删除了像Marc B建议的系统表格案例陈述
答案 1 :(得分:1)
不知道为什么,但无论如何,我会尝试添加
GROUP BY object;
到您的查询.. 没有它,你会得到意想不到的结果。
只有在进行此修改后,您才能尝试了解下一步要修复的内容。