按主要分区分组

时间:2019-03-04 12:24:38

标签: cassandra

我无法在主分区上执行分组依据。我正在使用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 :(得分:1)

对于初学者,您的架构无效。您不能在代码上设置群集顺序,因为它是分区键。顺序将由其哈希决定(除非使用字节顺序分区程序,但不要这样做)。

您所谈论的查询和事情确实起作用。例如,您可以运行

> 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的输出吗?