分组依据:计算字段以在 bigquery 中返回相应的日期



我需要做一个用户级别的分析。由于每个用户的数据有很多不同的行(与不同的事件相关(,我需要按用户分组并创建一些表示不同行的计算字段。其中一个字段是自用户上次购买(今天 - 上次购买日期(以来的天数的计算。我已经尝试了很多不同的代码,也做了很多研究,但找不到解决方案。

对我来说更有意义但不起作用的代码如下:

语句时使用大小写

SELECT CASE WHEN LAST(tr_orderid <> "") THEN 
DATEDIFF(CURRENT_DATE(),event_date) ELSE NULL END AS recency_lastbooking
FROM df
GROUP BY domain_userid

使用 IF 语句

SELECT IF(LAST(tr_total > 0), DATEDIFF(CURRENT_DATE(),event_date), NULL) 
AS recency_lastbooking
FROM df
GROUP BY domain_userid

我得到的错误是:表达式"event_date"在分组依据列表中不存在

我认为如果我使用 LAST(event_date(,查询将返回特定用户所有行中的最后日期,而不是返回用户购买事件的最后一天。

PS:我可以使用tr_total(总交易(>0或tr_orderid(交易订单ID(<>">

谢谢!

我认为你只需要一个窗口函数:

SELECT DATE_DIFF(CURRENT_DATE,
MAX(tr_orderid) OVER (PARTITION BY domain_userid),
day
) AS recency_lastbooking
FROM df;

相关内容

  • 没有找到相关文章

最新更新