我创建了包含以下字段的表
CREATE TABLE snwv2jobs.testtab (
testtabid bigint,
posteddate timestamp,
description text,
year bigint,
PRIMARY KEY ((testtabid,year),posteddate)
) WITH CLUSTERING ORDER BY (posteddate DESC)
但在检索数据时,结果显示:
testtabid - 35
posteddate - 2016-11-25 17:40:29 + 0530
-2016年
testtabid - 36
posteddate - 2016-11-25 17:40:31 + 0530
-2016年
testtabid - 34
posteddate - 2016-11-25 17:40:25 + 0530
-2016年
testtabid - 37
posteddate - 2016-11-25 17:40:34 + 0530
-2016年
testtabid - 38
posteddate - 2016-11-25 17:40:37 + 0530
-2016年
我需要这样的结果:
testtabid - 38
posteddate - 2016-11-25 17:40:37 + 0530
-2016年
testtabid - 37
posteddate - 2016-11-25 17:40:34 + 0530
-2016年
testtabid - 36
posteddate - 2016-11-25 17:40:31 + 0530
-2016年
testtabid - 35
posteddate - 2016-11-25 17:40:29 + 0530
-2016年
testtabid - 34
posteddate - 2016-11-25 17:40:25 + 0530
-2016年
答案 0 :(得分:0)
如果您希望一年中的所有数据按postsdate排序,则以下是架构
CREATE TABLE snwv2jobs.testtab (
testtabid bigint,
posteddate timestamp,
description text,
year bigint,
PRIMARY KEY ((year),posteddate, testtabid)
) WITH CLUSTERING ORDER BY (posteddate DESC, testtabid DESC)
上述架构存在问题如果您在一年内生成了大量数据。所有数据都将转到同一个分区。
因此您需要在分区键中添加月份和星期。所以这里的模式将对一周内的所有数据进行排序
CREATE TABLE snwv2jobs.testtab (
testtabid bigint,
posteddate timestamp,
description text,
year int,
month int,
week int,
PRIMARY KEY ((year,month,week),posteddate, testtabid)
) WITH CLUSTERING ORDER BY (posteddate DESC, testtabid DESC)
如果数据较少,则可以从分区键中删除一周,或者如果您在一天内生成大量数据,则可以在分区键中添加一天而不是一周。