I have a column family with primary key definition like this:
...
PRIMARY KEY ((website_id, item_id), user_id, date)
which will be queried using queries such as:
SELECT * FROM myCF
WHERE website_id = 30 AND item_id = 10
AND user_id = 0 AND date > 'some_date' ;
However, I'd like to keep my column family ordered by date only, such as SELECT date FROM myCF ;
would return the most recent inserted date.
Due to the order of clustering columns, what I get is an order per user_id then per date. If I change the primary key definition to:
PRIMARY KEY ((website_id, item_id), date, user_id)
I can no longer run the same query, as date must be restricted is user_id is.
I thought there might be some way to say:
...
PRIMARY KEY ((website_id, shop_id), store_id, date)
) WITH CLUSTERING ORDER BY (store_id RANDOMPLEASE, date DESC) ;
But it doesn't seem to exist. Worst, maybe this is completely stupid and I don't get why.
Is there any ways of achieving this? Am I missing something?
Many thanks!
PRIMARY KEY ((website_id, item_id), date, user_id)
prevents me from using filters:AND user_id = 0 AND date > 'some_date' ;
since date is preceding user_id and is restricted by a non-EQ equation. Now second solution without user_id as partition column prevents me from having a per user data since unicity is constrainted by the triplet (website_id, item_id, date). Am I wrong somewhere? – Icon