В основном здесь, как моя таблица создана:В cassandra cqlsh, как я могу выбрать из карты <ascii, ascii> в таблице?
CREATE TABLE points (
name ascii,
id varint,
attributes map<ascii, ascii>,
PRIMARY KEY (name, id)
)
и если я запускаю следующий ЗЕЬЕСТ я получаю это возвращается:
SELECT id, attributes from points limit 5;
id | attributes
----+------------------------------------------
1 | {STATION/Name: ABC, Type: 2, pFreq: 101}
2 | {STATION/Name: ABC, Type: 1, pFreq: 101}
3 | {STATION/Name: DEF, Type: 1, pFreq: 103}
4 | {STATION/Name: GHI, Type: 2, pFreq: 105}
5 | {STATION/Name: GHI, Type: 1, pFreq: 105}
То, что я хотел бы сделать может формировать предложение WHERE, основанное на информации внутри атрибутов. Что-то вроде следующего утверждения:
SELECT id FROM points WHERE name = 'NAME' AND attributes['pFreq'] = 101;
Однако, когда я запускаю это я получаю следующее сообщение об ошибке:
Bad Request: line 1:56 no viable alternative at input '['
Я смотрел на this обсуждение и кажется, что он не поддерживается все же, это правда? Или есть способ фильтровать информацию об атрибутах?
Вот варианты я работаю с:
[cqlsh 4.1.1 | Cassandra 2.0.7 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Когда я использую СОДЕРЖИТ я получаю следующее сообщение об ошибке: Bad Request : строка 1: 104 нет жизнеспособной альтернативы на входе 'CONTAINS' –
вы можете использовать карту вместо ascii ?, или является обязательным использованием ascii? –
Makoton
Можете ли вы выполнить ?: создать индекс по точкам (атрибутам); – Makoton