尝试使用大型数据集处理工作表

Dou*_*Fir 6 google-sheets google-apps-script

我在Google云端硬盘中的"我的信息中心"工作表中有一个自动信息中心.

仪表板的数据来自Google Analytics(GA),通过API.我使用Google表格GA增加了大部分数据.

我在仪表板中其中一个表的源数据非常大 - 太大而无法放入工作表本身.

因此,通过一些有限的脚本技能以及本论坛和一些在线教程的帮助,我在Google-Apps-Script中创建了一个脚本,用于查询GA api并返回我需要的所有数据,然后将其放入csv文件中与主仪表板相同的目录.

所以现在,在我的Drive中的"dashboard"文件夹中,我有2个文件:"我的仪表板" - 一个工作表和"我的数据"一个csv文件.我可以,如果我想,而是将api调用的结果输出到工作表我只是假设csv文件会更有效.

我在Gsheet中打开了"我的数据"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
Run Code Online (Sandbox Code Playgroud)

有大约65,000行数据.

现在,在我的仪表板中,我需要一个表,在"组合"表中对数据进行分组和聚合(或者我可以以某种方式使用csv?).我喜欢的配方通常是例如

=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)"))
Run Code Online (Sandbox Code Playgroud)

因此,对于单元格中函数中的每个参数,我必须导入数据列并对其进行子集化.

我相信一定有更好的方法.现在这确实有效,但速度特别慢.

我正在考虑的途径:

  1. 有人提到在这里使用缓存服务.但是如何工作或如何将它与上面的IMPORTRANGE()函数集成?
  2. 有一个csv文件有什么好处,还是我应该从一开始就把结果输出到一个GSheet?
  3. 在脚本中我运行以获取数据,然后将其输出到csv文件(如果更好的话,还是Gsheet?)我在转换成文件之前将数据作为数组.我能在这里做些什么,比如直接从工作表中查询这个数组?请记住,我的脚本编写技巧非常基础.
  4. 据推测,我可以创建一个函数来为函数所在的每个单元格单独调用GA api,在每个单独的单元格中返回结果(所以在上面的示例中,调用ga api的函数为year/year(G17) &月=月(G17)中= [some_other_cell_reference).因此,此选项将导致更多api调用,但会导致更小的数据.不确定这是一个好主意还是完全走错方向.

我希望我已经充分地传达了我的问题.我需要找到一种更有效的方法来查询仪表板中的外部数据.

Rub*_*bén 3

无需使用多个 IMPORTRANGE 和 FILTER 一次导入一列,而是使用一个 IMPORTRANGE 来单步提取所需的所有列,并使用QUERY执行所需的操作。

就像在 FILTER 中包含 IMPORTRANGE 一样,您可以将其包含在 QUERY 中

IE 为简单起见,我将仅添加一个过滤条件

`=QUERY(IMPORTRANGE("key","range"),"select sum(Col6) where Col1 ='"&G$17&'")`
Run Code Online (Sandbox Code Playgroud)