按日期检索行:cassandra
retrieve rows by date: cassandra
数据中有一列 timestamp,模式为:
YEAR-MM-DD hour:minute:second
我想检索此时间戳列日期所在的行,例如是 > 2015-07-01
我不想比较时间,只是日期。
我试过了:
SELECT * FROM table_name where timestamp >= '2015-10-01' limit 10;
但没有给出所需的输出。
问题是如果列不是分区键或未编入索引的列,则无法使用该列过滤数据。
它们是使用关键字 allow filtering.
对列进行聚类的例外
有关详细信息,请参阅 Datastax documentation。
这里的一个问题是,Cassandra 在允许任何其他类型的条件(<、>、 ETC)。其他解决方案,如使用 ALLOW FILTERING 或索引,可能 "work," 但它们不会大规模执行,也不会 return 以任何顺序排列行。
Cassandra 只能在 分区键内强制执行排序顺序。例如,这意味着您可以 select 其中第一个 clustering column, given a certain, specific value for the partition key.
中具有特定 date/times 值的行
示例:
CREATE TABLE Whosebug.timestamptest (
userid text,
activetime timestamp,
value text,
PRIMARY KEY (userid, activetime)
) WITH CLUSTERING ORDER BY (activetime ASC)
aploetz@cqlsh:Whosebug> SELECT * FROm timestamptest
WHERE userid='a' AND activetime > '2015-09-25';
userid | activetime | value
--------+--------------------------+---------
a | 2015-09-25 06:33:33-0500 | value1
a | 2015-09-25 06:34:33-0500 | value2
a | 2015-10-22 09:26:00-0500 | value3
(3 rows)
基本上,您需要以对您的应用程序和查询要求有意义的方式进一步划分 table。
对于许多 Cassandra 开发人员来说,这往往是一个令人困惑的问题,因此我在今年早些时候为 DataStax 撰写的一篇文章中包含了一个 link:We Shall Have Order!
数据中有一列 timestamp,模式为:
YEAR-MM-DD hour:minute:second
我想检索此时间戳列日期所在的行,例如是 > 2015-07-01
我不想比较时间,只是日期。 我试过了:
SELECT * FROM table_name where timestamp >= '2015-10-01' limit 10;
但没有给出所需的输出。
问题是如果列不是分区键或未编入索引的列,则无法使用该列过滤数据。
它们是使用关键字 allow filtering.
对列进行聚类的例外有关详细信息,请参阅 Datastax documentation。
这里的一个问题是,Cassandra 在允许任何其他类型的条件(<、>、 ETC)。其他解决方案,如使用 ALLOW FILTERING 或索引,可能 "work," 但它们不会大规模执行,也不会 return 以任何顺序排列行。
Cassandra 只能在 分区键内强制执行排序顺序。例如,这意味着您可以 select 其中第一个 clustering column, given a certain, specific value for the partition key.
中具有特定 date/times 值的行示例:
CREATE TABLE Whosebug.timestamptest (
userid text,
activetime timestamp,
value text,
PRIMARY KEY (userid, activetime)
) WITH CLUSTERING ORDER BY (activetime ASC)
aploetz@cqlsh:Whosebug> SELECT * FROm timestamptest
WHERE userid='a' AND activetime > '2015-09-25';
userid | activetime | value
--------+--------------------------+---------
a | 2015-09-25 06:33:33-0500 | value1
a | 2015-09-25 06:34:33-0500 | value2
a | 2015-10-22 09:26:00-0500 | value3
(3 rows)
基本上,您需要以对您的应用程序和查询要求有意义的方式进一步划分 table。
对于许多 Cassandra 开发人员来说,这往往是一个令人困惑的问题,因此我在今年早些时候为 DataStax 撰写的一篇文章中包含了一个 link:We Shall Have Order!