我需要一个分组查询以及是否基于计数的条件,并且我在下面的mysql中有有效的查询。
select notification,subject,max(time) as recent,value,IF(COUNT(event.value) > 1, 'Abnormal', 'Normal') AS NewResult from event where time between date_add(now(), interval -10 minute) and now() group by device,value order by time;
在cassandra中是否有与此相关的查询。
答案 0 :(得分:2)
不。这将需要过滤并至少分散所有令牌范围内的分散数据(如果使用索引),并且可能需要全表扫描。两者都无法很好地扩展,因此根本不被支持,因此cql语法中根本不允许使用更复杂的表达式。
在cassandra中,您围绕查询设计表,而不是围绕数据设计查询。您可能真的想考虑使用spark或hadoop进行更复杂的批量处理,但实际上您并未使用数据库来实现其设计目的。如果只是一个运行的即席查询,您可以编写一个客户端应用程序,将所有数据提取,汇总和过滤。
如果有机会,请考虑如果需要读取数据模型,请更改数据模型。