我正在尝试编写一个查询
这里的斗争(纠正我,如果我错了)是我不能使用Cassandra的内置“USE TIMESTAMP”功能,因为在创建新行时,请求提供的时间戳几乎肯定低于默认时间戳,因此它将无法创建新行。
因此我只能创建一个新列来存储时间戳。然后我有一个OR条件来实现:“如果lastTimestamp == null或lastTimestamp< timestamp”,但不幸的是Cassandra不支持IF子句中的“OR”逻辑。
我能想到的另一个选择是,我总是通过“INSERT IF NOT EXIST”来创建一个新行,并填充lastTimestamp = 0.然后应用“如果时间戳更大则更新”操作。但这基本上是两个写而不是一个。还有其他可能的解决方案吗?
答案 0 :(得分:0)
在插入/更新/删除时,您需要指定时间戳(以微秒为单位)。
执行此操作的简单方法是将时间戳(以毫秒为单位)乘以1000
示例:
Delete from FROM TRANSIENT..INTERIM_NPS_SURVEY_MOBILE_RESULTS_2017090
Where DRS_RECORD_ID in (
Select DRS_RECORD_ID from RANKED WHERE DR>1)
此处1504952646912000是从1504952646912毫秒转换的以微秒为单位的时间戳