Можно ли выбрать X записей из каждого ключа кластеризации Y в разделе? - PullRequest
0 голосов
/ 30 декабря 2018

Имея таблицу с PRIMARY KEY (pkey, ckey_a, ckey_b, etc) WITH CLUSTERING ORDER BY (ckey_a, ckey_b, etc), можно ли сделать оператор выбора, чтобы получить первые 30 записей каждой ckey_b группировки из определенного первичного ключа / широкой строки?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вы можете сделать SELECT * FROM table GROUP BY pkey, ckey_a, ckey_b, чтобы получить уникальные и ckey_c и тому подобное от ckey_b.Вы можете ограничить по разделу (см. Ответ Алекса), но вы не можете в настоящее время ограничить по группе.Если ваш запрос не вызывается часто (это дорого), вы можете создать UDA, который объединяется с GROUP BY, чтобы ограничить число группой, отбрасывая остальные.Это очень дорого, хотя координатор по-прежнему получает все значения, просто отфильтровывает их перед отправкой обратно клиенту.

0 голосов
/ 30 декабря 2018

Cassandra поддерживает ограничение на количество результатов только на раздел с использованием синтаксиса SELECT * FROM ks.table PER PARTITION LIMIT N;.Но вы можете достичь того, что вам нужно, если вы, например, переключитесь с PRIMARY KEY (pkey, ckey_a, ckey_b) на PRIMARY KEY ((pkey, ckey_a), ckey_b), но это зависит от ваших запросов.

...