基于cassanda计数的IF条件

时间:2019-01-04 13:02:06

标签: cassandra cql cassandra-3.0 cql3

我需要一个分组查询以及是否基于计数的条件,并且我在下面的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中是否有与此相关的查询。

1 个答案:

答案 0 :(得分:2)

不。这将需要过滤并至少分散所有令牌范围内的分散数据(如果使用索引),并且可能需要全表扫描。两者都无法很好地扩展,因此根本不被支持,因此cql语法中根本不允许使用更复杂的表达式。

在cassandra中,您围绕查询设计表,而不是围绕数据设计查询。您可能真的想考虑使用spark或hadoop进行更复杂的批量处理,但实际上您并未使用数据库来实现其设计目的。如果只是一个运行的即席查询,您可以编写一个客户端应用程序,将所有数据提取,汇总和过滤。

如果有机会,请考虑如果需要读取数据模型,请更改数据模型。