테이블의 각 행의 값은 product_id
, user_id
, updated_at
, rating
입니다.카산드라의 각 클러스터링 키의 마지막 두 레코드를 가져 오기 위해 스키마를 어떻게 디자인해야합니까?
주어진 기간 동안 얼마나 많은 사용자가 rating
을 변경했는지 알아보기 위해 표를 만들고 싶습니다. 난 단지 주어진 시간 창에서 각 사용자의 마지막 두 행을 얻을 수있는 방법을 알아낼 수 없었다
CREATE TABLE IF NOT EXISTS ratings_by_product (
product_id int,
updated_at timestamp,
user_id int,
rating int,
PRIMARY KEY ((product_id ), updated_at , user_id))
WITH CLUSTERING ORDER BY (updated_at DESC, user_id ASC);
만 : 같은
현재 내 스키마 보인다.
쿼리 또는 스키마 변경에 대한 조언을 보내 주시면 감사하겠습니다.
감사합니다. Aaron, 추가 쿼리를 실행하지 않는 한 어떤 사용자가 특정 제품을 평가했는지 알 수없는 문제가 있습니다. 귀하의 테이블에 또 다른 문제가있을 수 있습니다 주어진 제품의 모든 사용자의 마지막 2 등급 대신 지정된 사용자가 모든 제품 등급을 획득 할 수 있습니까? – Harrison
@Harrison 죄송합니다. 사용자의 최근 2 평가를 원한다고 생각합니다. 하지만 시간 범위에 따라 * ALL * 사용자에 대한 마지막 2 등급을 원합니다 ... 그렇지 않습니까? 예, CQL만으로는 불가능합니다. Spark와 같은 것을 사용하여 하위 쿼리를 수행해야하는 것처럼 들립니다. – Aaron