相关疑难解决方法(0)

用于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
查看次数

BigQuery:计算每个人的时间窗口聚合

给出Google BigQuery中的表格:

User  Timestamp 
A     TIMESTAMP(12/05/2015 12:05:01.8023)
B     TIMESTAMP(9/29/2015 12:15:01.0323)
B     TIMESTAMP(9/29/2015 13:05:01.0233)
A     TIMESTAMP(9/29/2015 14:05:01.0432)
C     TIMESTAMP(8/15/2015 5:05:01.0000)
B     TIMESTAMP(9/29/2015 14:06:01.0233)
A     TIMESTAMP(9/29/2015 14:06:01.0432)
Run Code Online (Sandbox Code Playgroud)

有一种简单的计算方法:

User  Maximum_Number_of_Events_this_User_Had_in_One_Hour  
A     2
B     3
C     1
Run Code Online (Sandbox Code Playgroud)

一小时的时间窗口是一个参数?

我试着通过构建LAG和分区函数来解决这两个问题:

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

用于滑动窗口聚合的Bigquery SQL

但是发现那些帖子太不相似,因为我没有找到每个时间窗口的人数,而是在一个时间窗口内找到每个人的最大事件数.

sql aggregate-functions window-functions google-bigquery

5
推荐指数
1
解决办法
2914
查看次数