我想验证行是否已添加到表中。什么cql语句会显示下表中的 last n行?
下面的表格描述:
cqlsh:timeseries> describe table option_data;
CREATE TABLE option_data (
ts bigint,
id text,
strike decimal,
callask decimal,
callbid decimal,
maturity timestamp,
putask decimal,
putbid decimal,
PRIMARY KEY ((ts), id, strike)
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.000000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
cqlsh:timeseries>
答案 0 :(得分:15)
您没有指定最后一个“由什么”。
获取每个ID的最后N个:
SELECT * FROM option_data WHERE ts=1 ORDER BY id DESC LIMIT N;
ORDER BY子句只能应用于复合主键中的第二列。如果您需要按时间查询,则需要更多地考虑您的数据模型。
如果您的查询通常是“最后N”,您可以考虑写这样的内容:
CREATE TABLE time_series (
id text,
t timeuuid,
data text,
PRIMARY KEY (id, t)
) WITH CLUSTERING ORDER BY (t DESC)
...其中'id'是您的时间序列ID。 CLUSTERING ORDER反转timeuuid't的顺序,使得单元格以查询的自然顺序存储。
有了这个,你将获得如下的最后五个事件:
SELECT * FROM time_series WHERE id='stream id' LIMIT 5;
Cassandra的时间序列中有很多信息。我建议阅读一些关于此事的最新文章。这是简洁而且相对较新的: http://www.datastax.com/documentation/tutorials/Time_Series.pdf