2015-06-10 13 views
6

के साथ चादरों में काम करने की कोशिश कर रहा है मेरे पास Google ड्राइव में "मेरे डैशबोर्ड" शीट में एक स्वचालित डैशबोर्ड है।बड़े डेटासेट

डैशबोर्ड का डेटा API के माध्यम से Google Analytics (GA) से आता है। अधिकांश डेटा मैं Google शीट्स GA का उपयोग करके खींचने में सक्षम हूं।

डैशबोर्ड में से किसी एक टेबल के लिए मेरा स्रोत डेटा बहुत बड़ा है - शीट के भीतर फिट होने के लिए बहुत बड़ा है।

तो, कुछ सीमित स्क्रिप्टिंग कौशल और इस मंच की सहायता और कुछ ऑनलाइन ट्यूटोरियल के साथ मैंने Google-Apps-Script में एक स्क्रिप्ट बनाई है जो GA api से पूछताछ करता है और मुझे आवश्यक सभी डेटा देता है और फिर इसे अंदर रखता है मुख्य डैशबोर्ड के समान निर्देशिका में एक सीएसवी फ़ाइल।

तो अब, डिस्क में मेरी "डैशबोर्ड" फ़ोल्डर में मैं 2 फ़ाइलें है: "मेरे डैशबोर्ड" - एक शीट और "मेरे डेटा" एक csv फ़ाइल। अगर मैं चाहता था, तो मैं एपीआई कॉल के परिणामों को एक शीट पर आउटपुट कर सकता था, मैंने अभी माना कि एक सीएसवी फ़ाइल अधिक कुशल होगी।

मैंने गेटशी में "मेरा डेटा" सीएसवी फ़ाइल खोला और इसे "संयुक्त" कहा। यहां डेटा का एक नमूना है:

ga:year ga:month ga:medium ga:source ga:campaign ga:goal1Completions 
2013 5 (none) (direct) (not set) 116 
2013 5 (not set) Adperio silvercontact?dp 0 
2013 5 (not set) Conde*it _medium=email 0 
2013 5 (not set) Hearst (not set) 0 
2013 5 (not set) stackersocial stackersocial 0 
2013 5 12111 9591 201fHN000xRGGszT3aEAA11uIsaT000. 0 
2013 5 12111 9591 201fHN00BrT.K.AY0Hvf3q1uIqgl000. 0 
2013 5 12111 9591 201fHN00CK619oBE3OsBZp1uIqGX000. 0 
2013 5 12111 9591 201fHN00DFXJxnUu1jx25M1uIzkC000. 0 

डेटा की ~ 65k पंक्तियां हैं।

अब, अपने डैशबोर्ड में मैं एक मेज है कि समूहों और "संयुक्त" शीट में डेटा एकत्र की जरूरत है (या मैं सीएसवी किसी भी तरह इस्तेमाल कर सकते हैं?)। फॉर्मूला में मेरा पसंदीदा जाना आम तौर पर उदा।

=sum(filter(ga:goal1Completions, ga:year="2015"...))

में खींच और इस डेटा से क्वेरी मुश्किल साबित हो रहा है और मैं कुछ सलाह के लिए उम्मीद कर रहा हूँ।

मैं बस के बाद से मैं 200k कोशिकाओं की चादर अधिकतम आकार से अधिक के बारे में सूचना प्राप्त मेरे डैशबोर्ड में डेटा आयात नहीं कर सकते। इसलिए मुझे प्रत्येक बार डेटा आयात करने और गणना चलाने के लिए फॉर्मूला पर भरोसा करना चाहिए।

=SUM(filter(IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!F2:F"), 
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!A2:A")=year(G$17), 
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!B2:B")=month(G$17), 
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!C2:C")="(direct)", 
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!D2:D")="(none)")) 

तो एक सेल में समारोह में प्रत्येक पैरामीटर के लिए मैं डेटा के स्तंभ को आयात और यह सबसेट चाहिए: यहाँ अभी मैं क्या उपयोग कर रहा हूँ का एक उदाहरण है।

मुझे यकीन है कि एक बेहतर तरीका होना चाहिए। अभी यह वास्तव में काम करता है लेकिन यह असाधारण रूप से धीमा है।

रास्ते के बारे में मैं सोच रहा था: अतः कैश सेवा here का उपयोग करके उल्लिखित पर

  1. किसी ने। लेकिन यह कैसे काम करेगा या मैं इसे अपने आयात() कार्यों के साथ कैसे एकीकृत करूं?
  2. क्या सीएसवी फ़ाइल रखने का कोई फायदा है या क्या मुझे परिणामों को आउटसेट से जीएसशीट में आउटपुट करना चाहिए?
  3. स्क्रिप्ट में मैं डेटा प्राप्त करने के लिए चलाता हूं, इसे एक सीएसवी फ़ाइल में आउटपुट करने से पहले (या एक ग्रिशी अगर यह बेहतर है?) मेरे पास फ़ाइल में रूपांतरण से पहले एक सरणी के रूप में डेटा है। क्या कोई ऐसी कल्पना है जो मैं यहां कर सकता हूं, जैसे कि इस सरणी को सीधे शीट के भीतर से पूछताछ करना? ध्यान में रखते हुए मेरे पटकथा कौशल बहुत बुनियादी हैं।
  4. संभवतः मैं प्रत्येक सेल के लिए जीए एपीआई को व्यक्तिगत रूप से कॉल करने के लिए एक समारोह बना सकता हूं, जिसमें प्रत्येक व्यक्ति में परिणाम लौटाया जा सकता है (इसलिए ऊपर दिए गए उदाहरण में, वर्ष = वर्ष के लिए जीए एपीआई को कॉल करने के लिए एक फ़ंक्शन (जी 17) & महीने = महीना (जी 17) & मध्यम = [some_other_cell_reference)। तो इस विकल्प के परिणामस्वरूप अधिक एपीआई कॉल होंगे लेकिन परिणामस्वरूप छोटे डेटा पर काम करना होगा। सुनिश्चित नहीं है कि यह एक अच्छा विचार है या पूरी तरह से गलत दिशा जा रहा है।

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

+0

क्या आपने BigQuery में देखा है? https://cloud.google.com/bigquery/what-is-bigquery आप जीएसएचईटी क्या कर सकते हैं की सीमा को दबा सकते हैं। –

+0

बहुत व्यापक। "या तो बहुत सारे संभावित उत्तर हैं, या इस प्रारूप के लिए अच्छे उत्तर बहुत लंबे होंगे"। कृपया "कुछ ऐसे अनुच्छेदों को अलग करें जिन्हें कुछ अनुच्छेदों में उत्तर दिया जा सकता है"। –

+0

तो आपने फ़्यूज़नटेबल्स के खिलाफ निर्णय लिया है? http://stackoverflow.com/questions/30695675/union-data-in-multiple-tabs/30725158?noredirect=1#comment49536435_30725158 यह जानने में रुचि होगी कि आपका दिमाग किसने बनाया है? :) – Tim

उत्तर

2

एकाधिक आयात और फ़िल्टर का उपयोग करके एक समय में एक कॉलम आयात करने के बजाय एक ही आयात में आवश्यक सभी कॉलम खींचने के लिए एक एकल आयात का उपयोग करें और आपको आवश्यक संचालन करने के लिए QUERY का उपयोग करें।

उसी तरह है कि आप ImportRange फ़िल्टर के अंदर शामिल है, आप इसे क्वेरी के अंदर शामिल कर सकते हैं

अर्थात उदाहरण के लिए, फ़्यूजन तालिका - सरलता के लिए मैं केवल एक फ़िल्टरिंग मापदंड

`=QUERY(IMPORTRANGE("key","range"),"select sum(Col6) where Col1 ='"&G$17&'")` 
+0

हाय @ रूबेन। ठीक है, लेकिन जब मैं अपने प्रारंभिक आयात() को सभी स्तंभों में खींचने के लिए करता हूं, तो मैं परिणामों को बाद में पूछताछ के लिए "स्टोर" करूंगा? मेरे पास डेटा बाहरी कारण है क्योंकि मैं अधिकतम आकार सीमा का उल्लंघन किए बिना डेटा को शीट में फिट नहीं कर सकता। –

+0

QUERY, फ़िल्टर के रूप में, IMPORTRANGE परिणाम पैरामीटर के रूप में उपयोग कर सकता है। –

2

के बाद से स्रोत डेटा Google शीट के लिए बहुत बड़ी है जोड़ना होगा, आप एक विकल्प के डेटा संग्रह है कि आप दिलचस्प क्वेरी करने की अनुमति होगी इस्तेमाल कर सकते हैं।

आप FusionTables उन्नत सेवा के माध्यम से Google Apps स्क्रिप्ट से फ़्यूज़न टेबल्स तक पहुंच सकते हैं, जो enabled first होना चाहिए।

Database abstraction with google apps script में, ब्रूस मैकफेरसन एक अमूर्त परत पेश करता है जिसमें बैक-एंड वेयरहाउस के रूप में विभिन्न प्रकार की सेवाएं हो सकती हैं। यह आपके लिए फ्यूजनटेबल्स से निपटने के विवरण का ख्याल रखता है। अभी तक बेहतर, आप अपने मौजूदा Google शीट बैक-एंड के साथ पहले cDbAbstraction library का उपयोग करने के लिए अपने कोड को दोबारा कर सकते हैं, फिर बाद में पूर्ण डेटा सेट के लिए DriverFusion जोड़ें।

+1

बस @ टिम की टिप्पणी देखी, और [आपके पिछले प्रश्न] (http://stackoverflow.com/questions/30695675/union-data-in-multiple-tabs/30725158) पर उत्तर दें ... एक ही विषय। Google शीट्स बिग डेटा के लिए नहीं है। – Mogsdad

+0

हाय @Mogsdad जानकारी के लिए धन्यवाद। मेरे कौशल सेट को देखते हुए मैं आपके समाधान के आधार पर चीजों के साथ जाने के लिए संघर्ष कर रहा हूं लेकिन शायद इसे एपीआई का उपयोग करने के साथ कुछ और उन्नत कोडिंग कौशल और परिचितता की आवश्यकता है।लेकिन संक्षेप में मुझे लगता है कि आप सुझाव दे रहे हैं कि मैं डेटा को एक संलयन तालिका में खींचता हूं और इसका उपयोग अपने डेटा को स्टोर करने के लिए करता हूं, फिर शायद फ़्यूज़न टेबल डेटा से पूछताछ करें। https://developers.google.com/fusiontables/docs/v2/sql-reference और फिर परिणाम को चादरों में खींच रहे हैं? क्या आप जो कह रहे हैं उसका सारांश? –

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