我想要一个按日期分配计数器的密钥空间。我一直在阅读文档,它说计数器列不能存在于时间戳旁边。有没有办法实现这个目标?
想要拥有的一个例子是:
material(text) views(counter) date(timestamp)
"phones" 234 2015-01-22
"tablets" 55 2015-01-22
"phones" 20 2015-01-21
"tablets" 50 2015-01-21
一种方法是将日期设为文本或长文,但这会阻止我从“拉斯周”获得“所有视图”。我正在寻找你的经历:)
我正在使用Cassandra 2.0.11 | CQL规范3.1.1
答案 0 :(得分:1)
您可以将计数器与其他列结合使用,前提是其他列是分区键或聚类键的一部分(即计数器是唯一的值)。
在您的情况下,由于您希望按日期过滤,因此一种好方法是将material
设置为分区键,将date
设置为群集键,将views
设置为您的值。
使用日期作为聚类键,您可以按日期顺序依次订购计数器。这将允许您过滤上周。
这种架构的一个例子是:
CREATE TABLE views (
material text,
date timestamp,
views counter,
PRIMARY KEY(material, date)
) WITH CLUSTERING ORDER BY (date DESC);