database-design - “仅当分区键受 EQ 或 IN 限制时,才支持 ORDER BY。” 卡桑德拉
问题描述
我已经像这样创建了我的桌子..
CREATE TABLE test1.mytest (
id text,
year text,
time bigint,
crtby text,
data text,
postid text,
upby text,
PRIMARY KEY ((id, year), time)
) WITH CLUSTERING ORDER BY (time DESC)
我想根据时间键对数据进行排序。
SELECT * FROM test1.mytest WHERE id ='b' ORDER BY time asc ALLOW FILTERING ;
当我尝试上面的命令时,我得到了
InvalidRequest: Error from server: code=2200 [Invalid query] message="ORDER BY is only supported when the partition key is restricted by an EQ or an IN."
解决方案
该错误清楚地描述了失败的原因。您的主键是id和year,然后按时间键进行进一步的聚类。
Cassandra 需要知道id和year才能按时下订单。
由于您并不总是在查询中使用分区键(id、年份),因此要按时间排序,您将不得不使用物化视图。更多细节可以在这里找到。
推荐阅读
- javascript - d3 exit selection comes up empty even with unique id value
- excel - VBA - inserting a variable number of columns in a specific location in a table
- python - Is it possible to add a layer in a keras model that is only applied during inference?
- javascript - 功能不会在问题之间跳过
- c# - 对象中的多个项目
- javascript - Object.keys 为包含属性的对象返回一个空数组
- sql - 是否有任何用于 hive 的 SQL 查询解析器?
- swift - 协议和通用函数中的关联类型使用
- jquery - jQuery CSS - 模态框上的自动完成下拉菜单
- python - 使用折线图绘制一段时间内的数据