Как выбрать максимальную метку времени в разделе с помощью Cassandra - PullRequest
0 голосов
/ 09 ноября 2018

У меня проблема с моделированием моих данных с использованием Cassandra. Я хотел бы использовать его в качестве магазина событий. Мои события имеют метку времени создания. Те события принадлежат разделу, который идентифицируется по id.

Теперь я хотел бы увидеть самое последнее событие для каждого идентификатора, а затем отфильтровать эти идентификаторы в соответствии с отметкой времени.

Итак, у меня есть что-то вроде этого:

ID | CREATION_TIMESTAMP              | CONTENT
---+---------------------------------+----------------
1  | 2018-11-09 12:15:45.841000+0000 | {SOME_CONTENT} 
1  | 2018-11-09 12:15:55.654656+0000 | {SOME_CONTENT}
2  | 2018-11-09 12:15:35.982354+0000 | {SOME_CONTENT}
2  | 2018-11-09 12:35:25.321655+0000 | {SOME_CONTENT}
2  | 2018-11-09 13:15:15.068498+0000 | {SOME_CONTENT}

Я попытался сгруппировать по идентификатору раздела и запросить максимальное значение creation_timestamp, но это не разрешено, и я должен указать идентификатор раздела, используя EQ или IN. Дополнительное чтение заставило меня поверить, что это совершенно неправильный подход к этой проблеме, но я не знаю, является ли NoSQL не подходящим инструментом для работы, или я просто подхожу к этой проблеме с неправильной точки зрения?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

не могли бы вы поделиться вашим определением таблицы.

просмотрев свои данные, вы можете использовать идентификатор в качестве ключа раздела и CREATION_TIMESTAMP в качестве столбца кластеризации.

Вы можете использовать select MAX (CREATION_TIMESTAMP) из keyspace.table, где ID = 'value';

0 голосов
/ 09 ноября 2018

Вы можете легко достичь этого, имея CREATION_TIMESTAMP в качестве столбца кластеризации и заказав DESC. Затем вы должны выполнить запрос по своему идентификатору и использовать лимит 1 (который вернет самое последнее событие, поскольку данные имеют порядок DESC в этом ключе раздела).

...