Cassandra 从地图中选择特定值
我正在尝试创建一个宽列表,20000多个列 最初我想我会使用:Cassandra 从地图中选择特定值,cassandra,cql,cql3,Cassandra,Cql,Cql3,我正在尝试创建一个宽列表,20000多个列 最初我想我会使用: CREATE TABLE details ( key TEXT, detail map<TEXT, TEXT> PRIMARY KEY (KEY) ); 然而,我想读一个单独的细节: select detail[col1] where key='123' 执行此查询时,我得到以下错误: no viable alternative at input '[' 这会起作用吗,还是我需要一种不
CREATE TABLE details (
key TEXT,
detail map<TEXT, TEXT>
PRIMARY KEY (KEY)
);
然而,我想读一个单独的细节:
select detail[col1] where key='123'
执行此查询时,我得到以下错误:
no viable alternative at input '['
这会起作用吗,还是我需要一种不同的方法?基本上,cassandra还不支持此功能
见此集合是一次获取所有数据的小数据组 如果您希望在更精细的级别访问元组,并且仍然能够询问“给定键的所有数据对是什么”,则应使用如下表:
CREATE TABLE details (
key TEXT,
detail_key text,
detail_value text,
PRIMARY KEY (key, detail_key)
);
这将允许SELECT*FROM details WHERE key=?
以及SELECT*FROM details WHERE key=?和detail_key=?
您可以使用代替。
请尝试以以下方式定义表:
CREATE TYPE detailtype (
col1 TEXT,
col2 TEXT
);
CREATE TABLE details (
key TEXT,
detail frozen<detailtype>,
PRIMARY KEY (KEY)
);
select detail.col1 where key='123';
谢谢,这是我采取的方法。仍然没有看到它3.9,不知道原因是什么,找不到它。另外,它们本身存储为列。在CQL中不可能部分读取集合列。从集合中检索数据的唯一方法是读取集合的全部内容;因此,在集合列中存储大型、无边界的数据集通常是不切实际的
select detail.col1 where key='123';