我正试图从Cassandra的日期获得一个范围,我创建了这样的表:
CREATE TABLE teste6 (
time timeuuid,
id text,
checked boolean,
email text,
name text,
PRIMARY KEY ((time), id)
)
Run Code Online (Sandbox Code Playgroud)
但是当我选择它时,它不会返回任何东西.
SELECT * FROM teste6 WHERE time IN ( minTimeuuid('2013-01-01 00:05+0000'), now() );
(0 rows)
Run Code Online (Sandbox Code Playgroud)
如何从Cassandra查询中获取日期范围?
该IN条件用于为SELECT查询指定多个键.要为您的表运行日期范围查询,(您已关闭),但您需要使用大于和小于.
当然,您不能在分区键上运行大于/小于查询,因此您需要翻转键才能使其正常工作.这也意味着您还需要id在WHERE子句中指定您的:
CREATE TABLE teste6 (
time timeuuid,
id text,
checked boolean,
email text,
name text,
PRIMARY KEY ((id), time)
)
INSERT INTO teste6 (time,id,checked,email,name)
VALUES (now(),'B26354',true,'rdeckard@lapd.gov','Rick Deckard');
SELECT * FROM teste6
WHERE id='B26354'
AND time >= minTimeuuid('2013-01-01 00:05+0000')
AND time <= now();
id | time | checked | email | name
--------+--------------------------------------+---------+-------------------+--------------
B26354 | bf0711f0-b87a-11e4-9dbe-21b264d4c94d | True | rdeckard@lapd.gov | Rick Deckard
(1 rows)
Run Code Online (Sandbox Code Playgroud)
现在虽然这在技术上有效,但对数据进行分区id可能对您的应用程序不起作用.因此,您可能需要在数据模型后面进行更多考虑,并提出更好的分区键.
编辑:
请记住,使用Cassandra,我们的想法是掌握您需要能够实现的查询类型.然后围绕它构建您的数据模型.您的原始表结构可能适用于关系数据库,但在Cassandra中,这种类型的模型实际上很难以您询问的方式查询数据.
看看我对你的表所做的修改(基本上,我只是颠倒你的分区和集群键).如果你仍然需要帮助,Patrick McFadin(DataStax的首席布道师)写了一篇非常好的文章,名为" 时间序列数据建模入门".他有三个与你相似的例子.事实上,他的第一个非常类似于我在这里给你的建议.
| 归档时间: |
|
| 查看次数: |
5833 次 |
| 最近记录: |