【发布时间】:2013-12-13 20:25:56
【问题描述】:
我正在尝试计算分区上的运行总和。这似乎比BigQuery SQL running totals 中建议的方法更简单快捷。
例如:
选择语料库,语料库_日期,字数, sum(word_count) over (partition by corpus,corpus_date order by word_count,word DESC) as running_sum 从 [publicdata:samples.shakespeare]
我面临两个问题:
我无法让总和从最常见的单词(word_count 最高的单词)开始。设置 DESC 或 ASC 不会改变任何东西,并且总和从最不常见的单词开始。如果我将 order by 更改为仅包含“order by word_count”,则运行总和不正确,因为具有相同顺序(==相同 word_count)的行产生相同的运行总和。
在我正在执行的类似查询中(见下文),运行总和的第一行产生的总和为 0,尽管我求和的字段对于第一行不是 0。为什么会这样?如何解决该问题以显示正确的运行总和?查询是:
从
中选择* (选择
mongo_id,
帐户 ID,
事件日期,
trx_amount_sum_per_day,
SUM (trx_amount_sum_per_day) OVER (PARTITION BY mongo_id,account_id ORDER BY event_date DESC) AS running_sum,
ROW_NUMBER() OVER (PARTITION BY mongo_id,account_id ORDER BY event_date DESC) AS row_num
FROM [xs-polar-gasket-4:publicdataset.publictable]
) 按 event_date desc 排序
【问题讨论】:
-
加快问题 2:您可以与数据样本共享公共数据集吗?
-
我分享了数据。有关有问题的查询,请参阅修订后的问题 2
-
感谢分享 - 事实上,对于问题 2,有一些事情需要进一步调查(内部报告)
-
能否请您在相关时更新此问题的状态?
-
OVER、PARTITION 和浮动实际上存在问题 - 正在修复中(感谢报告!)。当修复程序投入生产时,一种解决方法是转换为整数,如:SELECT SUM(INTEGER(ROUND(x))) OVER(PARTITION BY y ORDER BY o)
标签: google-bigquery