如果我定义一个Cassandra表来存储时间序列
CREATE TABLE series (
... series_id INT,
... time TIMESTAMP,
... value DOUBLE,
... PRIMARY KEY (series_id, time)
... ) WITH CLUSTERING ORDER BY (time DESC);
在Java中,我使用驱动程序查询一些时间序列
com.datastax.driver.core.ResultSet results =
session.execute(
"SELECT * FROM series WHERE seriesid IN (1, 2)";
它会给我一个行列表,其中每一行都是这两个系列之一的数据点。但是,对于这些行,系列ID都是相同的(1或2)。是否有可能通过返回两行来实现有效载荷,一个用于1系列,一个用于2个系列,每个行都有一组可变列,每个数据点有一列?
答案 0 :(得分:1)
使用CQL3无法实现您的目标。 Cassandra转换结果视图以保护用户不必处理底层存储格式。
但是使用Datastax驱动程序和映射API,您可以使用以下代码实现所需的效果:
BAZ
另外,请注意使用“IN”被认为是cassandra中的反模式,应该避免,因此我使用循环执行异步执行来获得相同的效果。您可以阅读有关此here
的更多信息