2012-09-19 37 views
7

बड़े प्रश्न संदर्भ के आधार पर, वर्तमान में क्वांटाइल किसी अन्य प्रकार के समूह द्वारा किसी भी प्रकार की समूहिंग की अनुमति नहीं देता है। मैं मुख्य रूप से प्राप्त करने में दिलचस्पी लेता हूं जो कि एक निश्चित कॉलम द्वारा समूहीकृत है। मैं अभी देखता हूं कि एकमात्र काम प्रति विशिष्ट समूह सदस्य के लिए एक मात्रात्मक क्वेरी उत्पन्न करना है जहां समूह सदस्य कहां से एक शर्त है।BigQuery: QUANTILES के लिए समूह द्वारा समूह

उदाहरण के लिए यदि मैं वांछित परिणाम प्राप्त करना चाहता हूं तो कॉलम-वाई में प्रत्येक विशिष्ट पंक्ति के लिए नीचे दी गई क्वेरी का उपयोग करें।

SELECT QUANTILE(<column-x>, 1001) 
FROM <table> 
WHERE 
    <column-y> == <each distinct row in column-y> 
  1. करता है भविष्य में quantiles पर समूहीकरण अनुमति देने के लिए कुछ कार्यक्षमता होने पर बड़ा प्रश्न टीम योजना?
  2. क्या मैं यहां आने का प्रयास करने का एक बेहतर तरीका है?

धन्यवाद

उत्तर

1

जबकि वहाँ कुशल एल्गोरिदम quantiles वे कुछ हद तक अच्छी मेमोरी की गणना करने के लिए कर रहे हैं कर रहे हैं - एक ही क्वेरी में अनेक quantile गणना करने के लिए कोशिश कर रहा है महंगा हो जाता है।

  1. क्वांटिटी में सुधार करने की योजना है, लेकिन मुझे नहीं पता कि समय रेखा क्या है।
  2. क्या आपको औसत की आवश्यकता है? क्या आप आउटलेटर्स फ़िल्टर कर सकते हैं और शेष का औसत कर सकते हैं?
+0

मैं मुख्य रूप से माध्यिकाओं में दिलचस्पी है। लेकिन 99 वें और 99.9 प्रतिशत प्रतिशत अच्छा होगा। मैं आउटलाइनर्स को भी फ़िल्टर नहीं कर सकता। तो ऐसा लगता है कि वांछित परिणाम प्राप्त करने के लिए मुझे अलग-अलग प्रश्नों को चलाने होंगे। यद्यपि भविष्य में बड़ी क्वेरी में जोड़ने के लिए यह एक अच्छी सुविधा होगी। उत्तर के लिए धन्यवाद! – msrivas

0

अपने प्रति-समूह आकार तय हो गई है, तो आप order, nest और nth के संयोजन का उपयोग कर इसे हैक करने में सक्षम हो सकता है। उदाहरण के लिए, अगर वहाँ f2f1 का मूल्य प्रति के 9 अलग-अलग मान, मंझला के लिए कर रहे हैं:

 
select f1,nth(5,f2) within record from (
    select f1,nest(f2) f2 from (
    select f1, f2 from table 
    group by f1,f2 
    order by f2 
) group by f1 
); 

सुनिश्चित नहीं हैं कि सबक्वेरी में क्रमबद्ध क्रम दूसरा group जीवित रहने के लिए गारंटी है, लेकिन यह एक साधारण परीक्षण मैं में काम किया है, तो कोशिश की।

6

हाल ही में घोषित प्रतिशतile_cont() विंडो फ़ंक्शन के साथ आप मध्यस्थ प्राप्त कर सकते हैं। घोषणा ब्लॉग पोस्ट में उदाहरण पर

देखो:

http://googlecloudplatform.blogspot.com/2013/06/google-bigquery-bigger-faster-smarter-analytics-functions.html

SELECT MAX(median) AS median, room FROM (
    SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room 
    FROM [io_sensor_data.moscone_io13] 
    WHERE sensortype='temperature' 
) 
GROUP BY room 
+0

हाय @ फ़ेलिप-होफ़ा, आपके पास क्वेरी संदर्भ https://cloud.google.com/bigquery/docs/reference/legacy-sql#percentile_cont में बग है, क्योंकि क्वेरी वहां 1 और 4 नहीं लौटाती है – tworec

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