我正在尝试写一个查询,这样
这里的困难之处(如果我错了,请纠正我)是,我不能使用Cassandra内置的“使用时间戳”功能,因为在创建新行时,请求提供的时间戳几乎肯定低于默认时间戳,因此它将无法创建新行。
因此,我只能创建一个新列来存储时间戳。然后我要满足一个OR条件:"if lastTimestamp == null或lastTimestamp <时间戳“,但不幸的是,Cassandra不支持IF子句中的" OR”逻辑。
我能想到的另一个选择是,我总是通过“插入(如果不存在)”来创建一个新行,并填充lastTimestamp = 0。然后应用“如果时间戳更大的话更新”操作。但这实质上是两个写比一个写。还有其他可能的解决办法吗?
发布于 2017-09-11 04:20:07
On insert/update/delete您需要以微秒为单位指定时间戳。
这样做的简单方法是将时间戳乘以1000毫秒。
例子:
INSERT INTO data(id, map) VALUES('123-123-12321', {'object2' : {value : '2', timestamp : '2017-09-09 16:24:06.197000+0000'}}) USING TIMESTAMP 1504952646912000;这里的1504952646912000是从1504952646912毫秒转换而来的以微秒为单位的时间戳。
https://stackoverflow.com/questions/46105666
复制相似问题