Группировать по первичному разделу - PullRequest
0 голосов
/ 04 марта 2019

Я не могу выполнить Группирование по основному разделу.Я использую Cassandra 3.10.Когда я группируюсь, я получаю следующую ошибку.InvalidReqeust: Error from server: code=2200 [Invalid query] message="Group by currently only support groups of columns following their declared order in the Primary Key.Мой столбец является первичным ключом, хотя я все еще сталкиваюсь с проблемой.

Моя схема

Table trends{
name text,
price int,
quantity int,
code text,
code_name text,
cluster_id text
uitime timeuuid,
primary key((name,price),code,uitime))
with clustering order by (code DESC, uitime DESC)

И команда, которую я запускаю: select sum(quantity) from trends group by code;

1 Ответ

0 голосов
/ 04 марта 2019

Для начала ваша схема недействительна.Вы не можете установить порядок кластеризации для кода, потому что это ключ раздела.Порядок будет определяться его хешем (если только не используется секционатор порядка байтов - но не делайте этого).

Тем не менее, запрос и вещи, о которых вы говорите, работают.Например, вы можете запустить

> SELECT keyspace_name, sum(partitions_count) AS approx_partitions FROM system.size_estimates GROUP BY keyspace_name;

 keyspace_name      | approx_partitions
--------------------+-------------------
        system_auth |               128
              basic |           4936508
          keyspace1 |               870
 system_distributed |                 0
      system_traces |                 0

, где они имеют следующую схему:

CREATE TABLE system.size_estimates (
    keyspace_name text,
    table_name text,
    range_start text,
    range_end text,
    mean_partition_size bigint,
    partitions_count bigint,
    PRIMARY KEY ((keyspace_name), table_name, range_start, range_end)
) WITH CLUSTERING ORDER BY (table_name ASC, range_start ASC, range_end ASC)

Возможно, предоставленная вами псевдошхема отличается от действительной.Можете ли вы предоставить вывод describe table xxxxx в вашем вопросе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...