默认浮点值

时间:2014-02-17 10:37:18

标签: cassandra cql3

表中的列是float类型,在插入行时不会填充,即稍后要填充。 有没有办法选择那些行?

cql CLI输出null值。

这是我试过的查询。

select * from <table> where <column> is null;

然后是CQL: Unable to Null Check in "Where" Clause

即。在cassandra中没有像null那样的东西。

有解决方法吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,目前不支持此功能。 Cassandra将null解释为缺少值,而不是特殊常量。我猜测为选择查询添加空支持(以及索引,分区等)将是一个重大的重新设计,无论是代码方式还是数据如何在表中持久化,因此目前尚未实现。< / p>

对于解决方法,我建议使用一个常量值,在客户端使用“null”(例如:NaN-Infinity或其他正常范围以外的值值)。您必须确保使用此值显式初始化相应的行,因为当前也不支持默认值。

答案 1 :(得分:1)

丹尼尔是对的,但是现在还不支持,但出于错误的原因。 :)

根据原始问题中的链接,实际上从1.2.4开始支持Null。但是,即使使用ALLOW FILTERING,仍然不支持这样的无索引过滤查询(https://issues.apache.org/jira/browse/CASSANDRA-6377),因为它们超出了Cassandra大规模支持应用程序的使命。这种查询在原型设计时非常有用,但是当你有数十亿行时,其中有十行是空的,并且在你的集群上释放它,你将会遇到不好的时间。

(现在,如果您需要大规模进行分析,Cassandra会指出我们的Hadoop集成或DataStax Enterprise。)

也就是说,我们正朝着这个位置迈进,让用户做他们想做的事情,即使这意味着他们会在脚下射击。我们希望在2014年晚些时候在3.0中支持这种查询。