I am trying to create a WIDE Column Table, 20,000+ columns
Initially I was thinking I would use:
CREATE TABLE details (
key TEXT,
detail map<TEXT, TEXT>
PRIMARY KEY (KEY)
);
Inserting into this table works fine
UPDATE details SET detail = detail + { 'col1': '12'} where key='123' ;
UPDATE details SET detail = detail + { 'col20000': 'ABCD'} where key='123' ;
However, I would like to read an individual detail:
select detail[col1] where key='123'
when executing this query I get the following error:
no viable alternative at input '['
Will this work, or do I need a different approach?
HashMap. get() method of HashMap class is used to retrieve or fetch the value mapped by a particular key mentioned in the parameter. It returns NULL when the map contains no such mapping for the key.
Example: Get key for a given value in HashMap Here, the entrySet() method returns a set view of all the entries. Inside the if statement we check if the value from the entry is the same as the given value. And, for matching value, we get the corresponding key.
Get Keys and Values (Entries) from Java Map The entrySet() method returns a set of Map. Entry<K, V> objects that reside in the map. You can easily iterate over this set to get the keys and their associated values from a map.
Collections are small groups of data that you fetch all at once.
If you want to access tuples at a finer level, and still be able to ask "what are all the pairs of data for a given key," you should use a table like this:
CREATE TABLE details (
key TEXT,
detail_key text,
detail_value text,
PRIMARY KEY (key, detail_key)
);
This will allow SELECT * FROM details WHERE key = ?
as well as SELECT * FROM detail WHERE key = ? AND detail_key = ?
.
Basically this functionality is not yet supported by cassandra.
See this cql3 collections
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With