2015-02-20 10 views
8

का उपयोग कर GROUP_CONCAT पर अलग-अलग मान कैसे प्राप्त करें BigQuery में GROUP_CONCAT का उपयोग करते समय मैं अलग-अलग मान प्राप्त करने का प्रयास कर रहा हूं।Google Big Query

मैं एक सरल, स्थिर उदाहरण का उपयोग स्थिति को पुन: होगी:

संपादित करें: मैं उदाहरण के बेहतर मेरा असली स्थिति का प्रतिनिधित्व करने के लिए संशोधित किया है: group_concat साथ 2 कॉलम जो अलग होने की जरूरत है:

SELECT 
    category, 
    GROUP_CONCAT(id) as ids, 
    GROUP_CONCAT(product) as products 
FROM 
(SELECT "a" as category, "1" as id, "car" as product), 
(SELECT "a" as category, "2" as id, "car" as product), 
(SELECT "a" as category, "3" as id, "car" as product), 
(SELECT "b" as category, "4" as id, "car" as product), 
(SELECT "b" as category, "5" as id, "car" as product), 
(SELECT "b" as category, "2" as id, "bike" as product), 
(SELECT "a" as category, "1" as id, "truck" as product), 
GROUP BY 
    category 

यह उदाहरण प्रस्तुत करती है:

Row category ids products 
1 a 1,2,3,1 car,car,car,truck 
2 b 4,5,6 car,car,bike 

मैंने पाया डुप्लिकेट मानों पट्टी, गीला करना चाहते हैं कलश की तरह:

Row category ids products 
1 a 1,2,3 car,truck 
2 b 4,5,6 car,bike 

MySQL में, group_concat एक अलग विकल्प है, लेकिन BigQuery में वहाँ नहीं है।

कोई विचार? group_concat लागू करने के परिणाम आप चाहते हैं को प्राप्त करने से पहले

+1

के संभावित डुप्लिकेट [सिंटेक्स Google BigQuery में एक अलग ग्रुप \ _CONCAT चलाने के लिए] (http://stackoverflow.com/प्रश्न/28324533/सिंटैक्स-टू-रन-ए-विशिष्ट-समूह-कॉन्सट-इन-google-bigquery) – Pentium10

+0

मुझे लगता है कि यह समान है लेकिन बिल्कुल वही नहीं है, लेकिन @ पेंटियम 10 –

उत्तर

4

यहाँ समाधान डुप्लिकेट को निकालने के UNIQUE गुंजाइश एकत्रीकरण समारोह का उपयोग करता है। ध्यान दें, कि इसका इस्तेमाल करने में, पहले हम एक REPEATED का उपयोग कर NEST एकत्रीकरण का निर्माण करने की जरूरत है:

SELECT 
    GROUP_CONCAT(UNIQUE(ids)) WITHIN RECORD, 
    GROUP_CONCAT(UNIQUE(products)) WITHIN RECORD 
FROM (
SELECT 
    category, 
    NEST(id) as ids, 
    NEST(product) as products 
FROM 
(SELECT "a" as category, "1" as id, "car" as product), 
(SELECT "a" as category, "2" as id, "car" as product), 
(SELECT "a" as category, "3" as id, "car" as product), 
(SELECT "b" as category, "4" as id, "car" as product), 
(SELECT "b" as category, "5" as id, "car" as product), 
(SELECT "b" as category, "2" as id, "bike" as product), 
(SELECT "a" as category, "1" as id, "truck" as product), 
GROUP BY 
    category 
) 
+0

बिल्कुल सही मोशा! मैंने कभी भी अद्वितीय कार्य के बारे में नहीं सुना है। यह बेकार ढंग से काम किया! धन्यवाद! –

+0

मुझे नहीं लगता कि आपको पूर्वोत्तर उपेक्षा करने की आवश्यकता है – Roman

3

निकाला जा रहा है डुप्लिकेट:

SELECT 
     category, 
     GROUP_CONCAT(id) as ids 
    FROM ( 
    SELECT category, id 
    FROM 
    (SELECT "a" as category, "1" as id), 
    (SELECT "a" as category, "2" as id), 
    (SELECT "a" as category, "3" as id), 
    (SELECT "b" as category, "4" as id), 
    (SELECT "b" as category, "5" as id), 
    (SELECT "b" as category, "6" as id), 
    (SELECT "a" as category, "1" as id), 
    GROUP BY 
     category, id 
    ) 
    GROUP BY 
     category 
+0

इंगित करने के लिए धन्यवाद, धन्यवाद अहमद, यह काम करता है एक स्तंभ, लेकिन मेरी वास्तविक स्थिति में मुझे 2 अलग-अलग अलग-अलग स्तंभों की आवश्यकता है। मैंने समस्या दिखाने के लिए सवाल संपादित किया है। –

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