表中的列是float类型,在插入行时不会填充,即稍后要填充。 有没有办法选择那些行?
cql CLI输出null值。
这是我试过的查询。
select * from <table> where <column> is null;
然后是CQL: Unable to Null Check in "Where" Clause
即。在cassandra中没有像null那样的东西。
有解决方法吗?
答案 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中支持这种查询。