相关疑难解决方法(0)

用于滑动窗口聚合的Bigquery SQL

嗨我有一张看起来像这样的桌子

Date         Customer   Pageviews
2014/03/01   abc          5
2014/03/02   xyz          8
2014/03/03   abc          6
Run Code Online (Sandbox Code Playgroud)

我想获得按周分组的页面视图聚合,但显示过去30天的聚合 - (每周30天的窗口大小的滑动窗口聚合)

我正在使用google bigquery

编辑:戈登 - 你对"客户"的评论,实际上我需要的是稍微复杂一点,这就是为什么我把客户列入上表.我希望每周在30天的窗口中获得超过n次网页浏览量的客户数量.这样的事情

Date        Customers>10 pageviews in 30day window
2014/02/01  10
2014/02/08  5
2014/02/15  6
2014/02/22  15
Run Code Online (Sandbox Code Playgroud)

然而,为了保持简单,如果我只是得到一个滑动窗口聚合的网页浏览而忽略了客户,我会按照自己的方式工作.这样的事情

Date        count of pageviews in 30day window
2014/02/01  50
2014/02/08  55
2014/02/15  65
2014/02/22  75
Run Code Online (Sandbox Code Playgroud)

sql aggregate-functions moving-average sliding-window google-bigquery

7
推荐指数
1
解决办法
3043
查看次数

用于28天滑动窗口聚合的BigQuery SQL(无需编写28行SQL)

我正在尝试使用LAG函数计算BigQuery中的28天移动总和.

这个问题的最佳答案

用于滑动窗口聚合的Bigquery SQL

来自Felipe Hoffa表示您可以使用LAG功能.一个例子是:

SELECT
    spend + spend_lagged_1day + spend_lagged_2day + spend_lagged_3day + ... +  spend_lagged_27day as spend_28_day_sum,
    user,
    date
FROM (
  SELECT spend,
         LAG(spend, 1) OVER (PARTITION BY user ORDER BY date) spend_lagged_1day,
         LAG(spend, 2) OVER (PARTITION BY user ORDER BY date) spend_lagged_2day,
         LAG(spend, 3) OVER (PARTITION BY user ORDER BY date) spend_lagged_3day,
         ...
         LAG(spend, 28) OVER (PARTITION BY user ORDER BY date) spend_lagged_day,
         user,
         date
  FROM user_spend
)
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不必写出28行SQL!

sql sliding-window google-bigquery

7
推荐指数
2
解决办法
7053
查看次数