2013-10-16 13 views
5

में स्ट्रिंग कॉलम को विभाजित करना मान लें कि मेरे पास BigQuery में एक तालिका है जिसमें 2 कॉलम हैं। पहला स्तंभ एक नाम का प्रतिनिधित्व करता है, और दूसरी मनमानी लंबाई के मूल्यों की एक सीमित सूची है। उदाहरण:BigQuery

Name | Scores 
-----+------- 
Bob |10;20;20 
Sue |14;12;19;90 
Joe |30;15 

मैं कॉलम जहां पहला नाम है में बदलना चाहते हैं, और दूसरा, एक भी स्कोर मूल्य है, इसलिए जैसे:

Name,Score 
Bob,10 
Bob,20 
Bob,20 
Sue,14 
Sue,12 
Sue,19 
Sue,90 
Joe,30 
Joe,15 

इस अकेले BigQuery में किया जा सकता है?

उत्तर

8

अच्छी खबर सभी को! BigQuery अब स्प्लिट() कर सकते हैं! "find all two word phrases that appear in more than one row in a dataset" पर


देखो।

स्ट्रिंग से कई पंक्तियों को उत्पन्न करने के लिए BigQuery में एक मान को विभाजित करने का कोई मौजूदा तरीका नहीं है, लेकिन आप अल्पविरामों को देखने और पहले मान को खोजने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं। फिर दूसरा मान खोजने के लिए एक समान क्वेरी चलाएं, और इसी तरह। उपरोक्त उदाहरण में प्रस्तुत पैटर्न (कॉमा के माध्यम से यूनियन) का उपयोग करके, वे सभी को केवल एक प्रश्न में विलय किया जा सकता है।

+0

नाइस की तलाश में है, तो - यह अद्भुत है! परिणामी सरणी से खींचने के लिए तत्वों की एक श्रृंखला निर्दिष्ट करने के लिए कोई पैरामीटर हैं? –

+0

मुझे यकीन नहीं है कि मैं समझता हूं। नया सवाल पोस्ट करें? Http://stackoverflow.com/a/24172995/132438 देखें –

6

कोई अभी भी एक जवाब

select Name,split(Scores,';') as Score 
from (
     # replace the inner custome select with your source table 
     select * 
     from 
     (select 'Bob' as Name ,'10;20;20' as Scores), 
     (select 'Sue' as Name ,'14;12;19;90' as Scores), 
     (select 'Joe' as Name ,'30;15' as Scores) 
); 
संबंधित मुद्दे