在BigQuery中计算分区的运行总和

Lio*_*ior 8 google-bigquery

我正在尝试计算分区上的运行总和.这比BigQuery SQL运行总计中建议的方法更容易,更快捷.

例如:

SELECT语料库,corpus_date,word_count,sum(word_count)over(按语料库分区,corpus_date顺序by word_count,word DESC)as running_sum FROM [publicdata:samples.shakespeare]

我面临两个问题:

  1. 我无法让总和以最常见的单词(具有最高word_count的单词)开头.设置DESC或ASC不会改变任何东西,并且总和从最不常见的单词开始.如果我改变顺序只包括"order by word_count"而不是运行总和不正确,因为具有相同顺序(==相同word_count)的行产生相同的运行总和.

  2. 在我正在执行的类似查询中(见下文),运行和的第一行产生的总和为0,尽管第一行的字段I求和不为0.为什么会这样?如何解决问题以显示正确的运行总和?查询是:

select*from
(SELECT
mongo_id,
account_id,
event_date,
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排序

Fel*_*ffa 8

问题1:

更改:

SELECT
  corpus, corpus_date, word_count, SUM(word_count)
OVER
  (PARTITION BY corpus, corpus_date
  ORDER BY word_count, word DESC) AS running_sum
FROM [publicdata:samples.shakespeare]
Run Code Online (Sandbox Code Playgroud)

至:

SELECT
  corpus, corpus_date, word_count, SUM(word_count)
OVER
  (PARTITION BY corpus, corpus_date
  ORDER BY word_count DESC, word) AS running_sum
FROM [publicdata:samples.shakespeare]
Run Code Online (Sandbox Code Playgroud)

(原始查询按字词排序,但您想按word_count排序)