2013-07-11 14 views
8

में एकाधिक बार-बार फ़ील्ड क्वेरी करना मेरे पास एक स्कीमा है जिसमें कई बार दोहराए गए फ़ील्ड हैं जो घोंसला नहीं हैं।BigQuery

मैं पार उत्पाद क्वेरी करने के लिए कोशिश कर रहा हूँ, लेकिन मैं कोई त्रुटि मिलती है: "दोहराया क्षेत्रों के पार उत्पाद क्वेरी नहीं कर सकता ..."

अगर मैं केवल 2 दोहराया क्षेत्रों क्वेरी, मैं एक समतल कर सकते हैं उनमें से। फिर भी, मुझे 2 बार दोहराए गए क्षेत्रों से पूछताछ करने में दिलचस्पी है, और मैं समझ नहीं पा रहा हूं कि फ्लैटन सिंटैक्स इसका समर्थन कैसे करता है।

उदाहरण के लिए, तालिका संरचना है: a1, रिकॉर्ड (बार-बार): a1.b1, पूर्णांक a2, रिकॉर्ड (बार-बार): a2.b1, पूर्णांक ए 3, रिकॉर्ड (बार-बार): a3.b1 , पूर्णांक

मैं क्वेरी करना चाहते हैं: आप FLATTEN अंदर एक नेस्टेड सबसिलेक्ट उपयोग कर सकते हैं टैब

उत्तर

13

से चयन (*)। इसे चुनिंदा वक्तव्य के आस-पास एक अतिरिक्त माता-पिता की आवश्यकता है। (वाक्यविन्यास दुर्भाग्य से बदसूरत है)। जैसे

SELECT 
    ... 
FROM (
    FLATTEN((
     SELECT 
     ... 
     FROM (
      FLATTEN((
      SELECT 
       ... 
      FROM 
       table), 
      f1) 
     ) 
     ), 
     f2) 
    ) 
) 
+0

वर्क्स एक आकर्षण की तरह उपयोग कर सकते हैं! मैं केवल एक बार चुनने के लिए फ़ील्ड निर्दिष्ट करना चाहता हूं, सबसे आंतरिक चयन में, और अन्य सभी नेस्टेड चयनों पर * चुनें * लिखें। लेकिन फिर मैं क्लॉज द्वारा ऑर्डर निर्दिष्ट नहीं कर सकता, क्योंकि ऑर्डर के लिए फ़ील्ड को चुनिंदा फ़ील्ड में दिखने की आवश्यकता होती है। – Lior

7

तुम कुछ भी भीतरी चयन के अंदर विशिष्ट करने की ज़रूरत नहीं है, तुम बस

(FLATTEN(FLATTEN(table, a1), a2))

+0

यह भी ठीक काम करता है। –

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