Cassandra cql: how to select the LAST n rows from a table

后端 未结 1 945
不知归路
不知归路 2020-12-18 23:17

I want to verify that rows are getting added to the table. What cql statement would show the last n rows from the table below?

Table description be

相关标签:
1条回答
  • 2020-12-18 23:53

    You didn't specify last n "by what".

    To get the last N per id:

    SELECT * FROM option_data WHERE ts=1 ORDER BY id DESC LIMIT N;
    

    ORDER BY clause can only be applied to the second column in a compound primary key. If you need to query by time you will need to think about your data model a little more.

    If your queries are most often "last N", you might consider writing something like this:

    CREATE TABLE time_series (
        id text,
        t timeuuid,
        data text,
        PRIMARY KEY (id, t)
    ) WITH CLUSTERING ORDER BY (t DESC)
    

    ... where 'id' is your time series id. The CLUSTERING ORDER reverses the order of timeuuid 't', causing the cells to be stored in a natural order for your query.

    With this, you would get the last five events as follows:

    SELECT * FROM time_series WHERE id='stream id' LIMIT 5;
    

    There is a lot of information out there for time series in Cassandra. I suggest reading some of the more recent articles on the matter.

    0 讨论(0)
提交回复
热议问题