Предположим, у меня есть таблица следующего состава.
CREATE TABLE rollup (
hashname text,
key text,
day timestamp,
counter_value counter,
PRIMARY KEY (hashname, key, day)
) WITH
...
Я хочу запустить запрос, который выглядит как
SELECT * FROM rollup WHERE hashname='some_namespaced_hash' AND day>='2013-07-15' AND day<='2013-07-25';
Однако это не работает, потому что (я думаю) следующее также относится к >
, <
и т. д.
Составные ключи означают, что теперь для CQL имеет смысл использовать синтаксис ORDER BY и в запросах SELECT, но он по-прежнему не так гибок, как вы, возможно, привыкли, выполняя специальные запросы в SQL. Предложения ORDER BY могут выбирать только один столбец, и этот столбец должен быть вторым столбцом в составном PRIMARY KEY. Это верно даже для таблиц с более чем двумя компонентами столбцов в первичном ключе
а здесь day
— это третий столбец в ключе первичного столбца. Единственный способ, которым я могу это сделать, — изменить первичный составной ключ на PRIMARY KEY (hashname, day, key)
. Я не могу найти никакой документации, которая говорит мне, как это сделать. Является ли это возможным?
В качестве альтернативы, я упускаю «правильный» способ решения этой проблемы/я неправильно истолковываю проблему?