构建派生表

时间:2017-11-10 17:20:24

标签: google-bigquery

表结构:   InvoiceLineKey(串),
      收入(浮动),
      COGS(浮动),
      COST1(浮动),
      Cost2(浮动),
      COST3(浮动),
      Cost4(浮动),
      Cost5(浮动),
      Proft(浮动),
      QSPEC(浮点)。

行数:60,000,000条记录

选择
      InvoiceLineKey,
      收入,
      COGS,
      COST1,
      Cost2,
      COST3,
      Cost4,
      Cost5,
      Proft,
      ""作为QSPEC,
      排名()(按收入DESC排序)排名,
      SUM(收入)超过(按收入DESC订购)作为累计收入
    从
      [PI-训练:training.training_fact]
    WHERE
      收入> 0
    订购单       收入DESC
查询失败失败,错误为:

  

查询执行期间超出资源:查询无法执行   在分配的内存中执行。 ORDER BY运算符使用太多了   存储器..

1 个答案:

答案 0 :(得分:2)

假设InvoiceLineKey大小约为8个字节(与浮点列大小相同),则6000万行意味着结果大小约为4.8千兆字节。 documentation on "Managing Query Outputs" for BigQuery解释说,在大型数据集上使用ORDER BY时,您应该包含LIMIT或过滤器。

在您的情况下,假设大约十分之一Revenue值大于10000,并且这些是您要返回的值,您可以使用WHERE Revenue >= 10000将行数限制为排序到较小的数据子集。