Cassandra:您可以使用列中的派生值作为分区键的一部分吗?

时间:2018-06-11 18:15:36

标签: cassandra

假设我有一个表格架构,其中包含该事件的时间戳:

ng new

我的问题是:我可以跳过添加CREATE TABLE event_bucket_1 ( event_source text, event_year int, event_month int, event_id text, event_time timestamp, ... PRIMARY KEY ((event_source, event_year, event_month), event_id) ) WITH CLUSTERING ORDER BY (event_id DESC) event_year列,并将其替换为某种功能,例如event_monthyear(event_time)吗?我们认为month(event_time)event_year都是来自event_month的重复信息。

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。但是,从我的理解,你想要根据年和月查询,对吧?您可以通过将复合键中的event_yearevent_month替换为event_time并使用查询时间范围来完成此操作:

  

SELECT * FROM event_bucket_1其中event_source ='source'和event_time> '2018-06-01 00:00:00'和event_time< '2018-07-01 00:00:00';

答案 1 :(得分:1)

不,分区键必须是静态的,而且AFAIK不能在./ / p>进行评估。

您可以尝试在https://issues.apache.org/jira/secure/Dashboard.jspa

打开故障单作为未来版本的改进

似乎是一个很好的用例,适合更多场景。