当前位置: 首页 > 知识库问答 >
问题:

Cassandra:通过一些筛选以相反的顺序获取宽行的列

昌正奇
2023-03-14

我知道cassandra不支持二级索引的order by,但我真的不想要order by特性。我想要的只是能够按照列族中存储的升序或降序获取列,因为cassandra已经对列名进行了排序。

我想将cassandra中的时间序列数据建模为宽行。我需要按升序或降序访问此数据。我还想创建两个辅助索引来执行select查询。所以我的列族at_data看起来类似于,

create table at_data (acct_bucket_id text,
             ... ts varint,
             ... status int,
             ... side int,
             ... instrument_id varint,
             ... data text,
             ... PRIMARY KEY (acct_bucket_id, ts, status, side, instrument_id)
             ... ) with comment = 'audit data';

如果我将数据添加到这个列族中。

insert into at_data (acct_bucket_id, ts, status, side, instrument_id, data) values ('1:1', 1, 1, 1, 1, 'order 1');
insert into at_data (acct_bucket_id, ts, status, side, instrument_id, data) values ('1:1', 2, 1, 1, 1, 'order 2');
insert into at_data (acct_bucket_id, ts, status, side, instrument_id, data) values ('1:1', 3, 2, 1, 1, 'order 3');

并希望以降序获取状态与1匹配的“数据”。所以我创建了查询,从at_data中选择*,其中acct_bucket_id='1:1'和status=1 order by ts desc;

我如何做到这一点?

谢了,什里达尔

共有1个答案

戚晨
2023-03-14

您可以在at_data中执行select*,其中acct_bucket_id='1:1'和ts=1和status=1 order by ts desc;在查询中不能跳过ts,因为它在主键中位于status之前。而且您不能按statusorder by,因为order by只接受主键的第二个键。

可以将主键更改为primary_key(acct_bucket_id,status,ts,side,instrument_id)-将status放在ts之前。在这种情况下,您可以执行select*from at_data,其中acct_bucket_id='1:1'和status=1 order by status desc;

 类似资料:
  • 问题内容: 我有一个Java ee应用程序,在该应用程序中,我使用servlet来打印使用log4j创建的日志文件。在读取日志文件时,通常会寻找最后一个日志行,因此,如果servlet以相反的顺序打印日志文件,则它会更加有用。我的实际代码是: 我在互联网上找到的实现涉及使用StringBuffer并在打印之前加载所有文件,难道没有找到找到文件结尾并读取内容直到文件开头的代码轻巧的方式吗? 问题答案

  • 问题内容: 我有一个LinkedHashMap: 我需要从给定键的位置向后迭代。因此,如果为我提供了第十个项目的密钥,则需要向后迭代哈希表9、8、7等。 问题答案: 您不必遍历它。但是拔下钥匙并将其存储在列表中会很方便。这就是执行indexOf()类型操作的唯一方法。

  • 问题内容: 是否可以从我的表模型中获取选定的行索引? 我的对象已经知道表模型。不用传递对表的引用,它本身可以使用模型获取选定的索引吗? 问题答案: TableModel仅与数据相关,而ListSelectionModel与当前所选内容相关,因此,不,您无法从TableModel中获取所选行。

  • 问题内容: 如何使用python以相反的顺序读取文件?我想从最后一行读取文件。 问题答案: 在Python 3中:

  • 我有一个每日数据集。我只需要获得数据集中每个月的第一天的数据(数据是从1972年到2013年)。例如,我需要提取的索引,日期值。我的问题是每个月的第一天是不同的,因此我不能使用诸如之类的步骤,我该如何从数据集中提取这些值? 有没有类似的命令,我在另一个职位上发现的R? R-XTS:从缺少行的每日时间序列中获取每个月的第一个日期和值

  • 问题内容: 是否有一种从列表(特别是数组列表,但没关系)中获取有序流的合理方法,该方法以与原始列表相反的方式流元素? 我正在寻找一种不涉及在任何东西(收集器,另一个列表,数组等)中缓冲数据的解决方案,因为它们会复制浪费的容器或使用(因为它会修改列表)。 到目前为止,我在这里看到的最干净的方法是实现自己的版本,并以相反的方式遍历列表,或者实现以反向方式进行迭代并在其上使用。 请注意,此问题与Java