2015-05-26 14 views
6

मेरे पास दो टेबल table1 (दोहराए गए/रिकॉर्ड कॉलम के साथ जटिल एक) और table2 (काफी सरल) है। मैं निम्न क्वेरी का उपयोग कर table2 से एक स्तंभ के साथ table1 से सभी स्तंभों के साथ एक नई तालिका बनाने के लिए कोशिश कर रहा हूँ:BigQuery त्रुटि: दोहराए गए फ़ील्ड पर विभाजन नहीं कर सकता

select t1.id, t1.experience.desc, t1.experience.organization.*, t1.experience.department, t2.field2 as t1.experience.organization.newfield, t1.family_name 
from [so_public.table1] as t1 left join each [so_public.table2] as t2 
on t1.experience.organization.name = t2.field1 

मैं एक त्रुटि के रूप में नीचे छवि में दिखाया आवर्ती फ़ील्ड पर विभाजन नहीं किया जा सकता हो। दो तालिकाओं के स्कीमा भी अपनी संबंधित छवियों में दिखाए जाते हैं।

क्या कोई अंगूठे का सामान्य नियम है जब कोई दो टेबल से डेटा मर्ज करना चाहता है? क्या मैं हर संभव प्रयास करने की कोशिश कर रहा हूं?

वास्तविक तालिकाएं अधिक जटिल हैं। मैं केवल पर्याप्त संदर्भ दिखा रहा हूं जो इस मुद्दे को पुन: उत्पन्न करता है।

Query with error Table1 schema Table2 schema

उत्तर

6

आप समतल करने की आवश्यकता होगी() उन्हें शामिल होने से पहले अपने टेबल।

यह काम नहीं करता:

SELECT a.fullName, b.fullname 
FROM [bigquery-samples:nested.persons_living] a 
JOIN [bigquery-samples:nested.persons_living] b 
ON a.citiesLived.place=b.citiesLived.place 
LIMIT 1000 

Error: Cannot join on repeated field citiesLived.place 

यह करता है:

SELECT a.fullName, b.fullname 
FROM FLATTEN([bigquery-samples:nested.persons_living], citiesLived) a 
JOIN FLATTEN([bigquery-samples:nested.persons_living], citiesLived) b 
ON a.citiesLived.place=b.citiesLived.place 
LIMIT 1000 
+0

क्या आपके लिए मेरी क्वेरी को फिर से लिखना संभव है? मैंने कोशिश की लेकिन मैं असफल रहा। मुझे या तो त्रुटियां या अप्रत्याशित परिणाम मिल रहे हैं। – wpfwannabe

+0

@wpfwannabe, यदि आप नमूना डेटासेट सार्वजनिक करते हैं, तो मैं क्वेरी को फिर से लिख सकता हूं और –

+0

प्रकाशित करने से पहले इसका परीक्षण कर सकता हूं कृपया संपादित प्रश्न देखें। क्वेरी अब एक सार्वजनिक डेटासेट का संदर्भ लेना चाहिए। कृपया ध्यान दें कि मैं वास्तव में क्या कर रहा हूं मूल तालिका है + अन्य कॉल किए गए तालिका से कुछ कॉलम (न केवल परिणाम चले गए)। – wpfwannabe

1

सार्वजनिक नमूना आप संपादित पर प्रकाशित, एक काम कर क्वेरी के साथ:

select t1.id, t1.experience.desc, t1.experience.department, t1.experience.organization.*, t2.field2 as t1.experience.organization.newfield, t1.family_name 
from FLATTEN(FLATTEN([earnest-stock-91916:so_public.table1], experience.organization), experience) as t1 left join each [earnest-stock-91916:so_public.table2] as t2 
on t1.experience.organization.name = t2.field1; 

मैं कर रहा था डेटा को फ़्लैट करने के लिए (इसे दो बार लागू करना था), लेकिन मूल संरचना को पुनर्प्राप्त नहीं करना - उप-पंक्तियों में से किसी एक के खिलाफ शामिल होना एच है arder।

मुझे लगता है कि आप क्या करना चाहते हैं कुछ उप-पंक्तियों को समृद्ध करना है?

+0

हां, यह वही है जो मैं करने की कोशिश कर रहा हूं। मैं मूल डेटा/स्कीमा का उपयोग करना चाहता हूं और अतिरिक्त कॉलम (समृद्ध स्कीमा) के साथ एक ** नई ** तालिका बनाना चाहता हूं। अब तक मैं ऐसा करने में सक्षम नहीं हूं। यह असंभव प्रतीत होता है। ऐसा करने के लिए मुझे डेटा तैयारी चरण में स्कीमा विस्तार करना होगा - इससे पहले कि मैं वास्तव में बीक्यू में आयात करता हूं। भयानक लगता है। – wpfwannabe

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