【问题标题】:Cassandra CLUSTERING ORDER does not order data properlyCassandra CLUSTERING ORDER 无法正确排序数据
【发布时间】:2022-10-24 19:05:07
【问题描述】:

我创建了一个包含时间戳的表,但是当我尝试按时间戳变量进行聚类排序时,它的排序不正确。

要创建我写的表:

CREATE TABLE videos_by_tag ( 
tag text, 
video_id uuid, 
added_date timestamp, 
title text, 
PRIMARY KEY ((tag), added_date, video_id)) 
WITH CLUSTERING ORDER BY (added_date ASC);

我在执行SELECT * FROM videos_by_tag 时得到的输出是:


 tag       | added_date                      | video_id                             | title
-----------+---------------------------------+--------------------------------------+------------------------------
  datastax | 2013-04-16 00:00:00.000000+0000 | 5645f8bd-14bd-11e5-af1a-8638355b8e3a | What is DataStax Enterprise?
  datastax | 2013-10-16 00:00:00.000000+0000 | 4845ed97-14bd-11e5-8a40-8338255b7e33 |              DataStax Studio
 cassandra | 2012-04-03 00:00:00.000000+0000 | 245e8024-14bd-11e5-9743-8238356b7e32 |             Cassandra & SSDs
 cassandra | 2013-03-17 00:00:00.000000+0000 | 3452f7de-14bd-11e5-855e-8738355b7e3a |              Cassandra Intro
 cassandra | 2014-01-29 00:00:00.000000+0000 | 1645ea59-14bd-11e5-a993-8138354b7e31 |            Cassandra History

(5 rows)

如您所见,日期不正确。输出中间有一个 2012 年的值。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    您可以使用 ORDER BY 子句微调显示顺序。分区键必须在 WHERE 子句中定义,而 ORDER BY 子句定义用于排序的集群列。

    例子:

    SELECT * FROM videos_by_tag
    WHERE tag = 'datastax' ORDER BY added_date ASC;
    

    【讨论】:

    • 感谢您的答复!您的 ORDER BY 查询有效,但 Cassandra 不应该因为创建表时的 Clustering Order By 子句而按 added_date 对所有内容进行排序?
    • 不,Cassandra 只能在分区内强制执行排序顺序。
    猜你喜欢
    • 2017-09-04
    • 1970-01-01
    • 2022-01-24
    • 2012-01-23
    • 2015-01-07
    • 1970-01-01
    • 2012-06-07
    • 2012-12-31
    相关资源
    最近更新 更多