2013-04-15 21 views
14

मैं एक विस्तृत कॉलम तालिका बनाने के लिए कोशिश कर रहा हूँ से विशिष्ट मान चुनें, 20,000 कॉलमनक्शा

शुरू में मैं सोच रहा था मैं का प्रयोग करेंगे:

CREATE TABLE details (
    key TEXT, 
    detail map<TEXT, TEXT> 
    PRIMARY KEY (KEY) 
); 

इस तालिका में सम्मिलित करना ठीक काम करता है

UPDATE details SET detail = detail + { 'col1': '12'} where key='123' ; 
UPDATE details SET detail = detail + { 'col20000': 'ABCD'} where key='123' ; 

हालांकि, मैं एक व्यक्तिगत विवरण पढ़ना चाहता हूं:

select detail[col1] where key='123' 
,210

जब इस क्वेरी मैं निम्नलिखित त्रुटि मिलती है पर:

no viable alternative at input '[' 

क्या यह काम करते हैं, या मैं एक अलग दृष्टिकोण की आवश्यकता है?

उत्तर

6

असल में यह कार्यक्षमता अभी तक कैसंद्रा द्वारा समर्थित नहीं है।

देखें इस cql3 collections

12

संग्रह डेटा के छोटे समूहों है कि आप सभी को एक बार लाने हैं।

आप एक बेहतर स्तर पर tuples का उपयोग, और अभी भी पूछने के लिए सक्षम होने के लिए चाहते हैं "किसी कुंजी के लिए डेटा के सभी जोड़े क्या कर रहे हैं" आप एक तालिका इस तरह उपयोग करना चाहिए:

CREATE TABLE details (
    key TEXT, 
    detail_key text, 
    detail_value text, 
    PRIMARY KEY (key, detail_key) 
); 

यह SELECT * FROM details WHERE key = ? के साथ-साथ SELECT * FROM detail WHERE key = ? AND detail_key = ? की अनुमति देगा।

+0

धन्यवाद, यही वह दृष्टिकोण है जिसे मैंने लिया है। – e90jimmy

+0

अभी भी इसे नहीं देखते हैं 3.9, आश्चर्य कीजिए कि कारण क्या है, इसे नहीं मिला। AFAIK, वे खुद कॉलम के रूप में संग्रहीत हैं। "संग्रह कॉलम का आंशिक पढ़ना सीक्यूएल में संभव नहीं है। संग्रह से डेटा पुनर्प्राप्त करने का एकमात्र तरीका संग्रह को पूरी तरह से पढ़ना है; इस कारण से, संग्रह संग्रह में बड़े, असंबद्ध डेटासेट को स्टोर करना आम तौर पर अव्यवहारिक है" https://github.com/apache/cassandra/blob/cassandra-3.6/CHANGES.txt – kisna

संबंधित मुद्दे