Ho un cruscotto automatico in un foglio "la mia dashboard" in Google Drive.Cercando di lavorare in fogli con set di dati di grandi dimensioni
I dati del dashboard provengono da Google Analytics (GA) tramite l'API. La maggior parte dei dati sono stati in grado di accedere utilizzando l'aggiunta Google Fogli GA.
I dati di origine per una delle tabelle nel dashboard sono piuttosto grandi - troppo grandi per adattarsi al foglio stesso.
Quindi, con alcune capacità di scripting limitate e l'aiuto di questo forum e alcune esercitazioni online ho creato uno script in Google-Apps-Script che interroga l'API GA e restituisce tutti i dati di cui ho bisogno e quindi inserisce un file csv nella stessa directory del dashboard principale.
Così ora, nella mia cartella "dashboard" in Drive ho 2 file: "il mio dashboard" - un Foglio e "i miei dati" un file csv. Potrei, se volessi, inviare i risultati della chiamata api su un foglio, ma ho appena pensato che un file CSV sarebbe più efficiente.
Ho aperto il file csv "i miei dati" in un foglio Gsheet e l'ho chiamato "combinato". Ecco un esempio di come appaiono i dati:
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
Ci sono ~ 65k righe di dati.
Ora, nella mia bacheca ho bisogno di una tabella che raggruppa e aggrega i dati nel foglio "combinato" (o potrei usare il csv in qualche modo?). Il mio preferito andare alla formula è in genere, ad es.
=sum(filter(ga:goal1Completions, ga:year="2015"...))
Tirare in e l'interrogazione di questi dati si sta dimostrando difficile e spero in qualche consiglio.
Non posso semplicemente importare i dati nella mia dashboard poiché ricevo l'avviso relativo al superamento della dimensione massima del foglio di 200k di celle. Quindi devo fare affidamento sulla formula per importare i dati ed eseguire calcoli ogni volta. Ecco un esempio di quello che sto usando in questo momento:
=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)"))
Quindi per ogni parametro nella funzione in una cella devo importare la colonna di dati e sottoinsieme di esso.
Sono sicuro che ci deve essere un modo migliore. In questo momento funziona davvero, ma è eccezionalmente lento.
viali Stavo pensando:
- Qualcuno sul così detto utilizzando il servizio di cache here. Ma come funzionerebbe o come lo integrerei con le mie funzioni IMPORTRANGE() sopra?
- C'è qualche vantaggio nell'avere un file csv o dovrei semplicemente inviare i risultati in un GSheet fin dall'inizio?
- Nello script che eseguo per ottenere i dati, prima di esportarli in un file csv (o in un foglio di calcolo se è meglio?) Ho i dati come array prima della conversione in un file. C'è qualcosa di stravagante che posso fare qui, come interrogare questo array direttamente dal foglio? Tenendo presente che le mie capacità di scripting sono piuttosto semplici.
- Probabilmente potrei creare una funzione per chiamare individualmente l'api GA per ogni cella in cui si trova la funzione, restituendo i risultati in ogni singola cella (quindi nell'esempio sopra, una funzione per chiamare ga api per anno = anno (G17) & mese = mese (G17) & medio = [some_other_cell_reference). Quindi questa opzione si tradurrebbe in più chiamate API, ma i dati più piccoli su cui lavorare. Non sono sicuro se sia una buona idea o se vada nella direzione sbagliata del tutto.
Spero di aver comunicato sufficientemente il mio problema. Devo trovare un modo più efficiente di interrogare i miei dati esterni nella dashboard.
Hai esaminato BigQuery? https://cloud.google.com/bigquery/what-is-bigquery Puoi spingere i limiti di ciò che i GSheet possono fare. –
Troppo largo. "Ci sono troppe risposte possibili, o le buone risposte sarebbero troppo lunghe per questo formato". Si prega di "isolare un problema che può essere risolto in alcuni paragrafi". –
Quindi hai deciso contro FusionTables? http://stackoverflow.com/questions/30695675/union-data-in-multiple-tabs/30725158?noredirect=1#comment49536435_30725158 Sarebbe interessante sapere cosa ti ha fatto pensare? :) – Tim