【发布时间】:2021-08-08 12:27:17
【问题描述】:
抱歉,这篇文章太长了,我只是尽力解释一下。我正在 BigQuery 中处理来自 Analytics 的数据。
这是我的初始表格:
每当 fullVisitorId 相同时,我必须对此进行一些转换,以首先“填充”用户 ID 中的所有空白,并将此新字段称为transformed_userID,从而获得用户的最后一次访问。
我现在需要得到的是userID的实际段:下图中的字段desired_segment,我还没有设法得到。
这是我正在寻找的逻辑: 如果用户有一个与 UNACTIVE 不同的段 --> 则检索他在上次访问时拥有的段,忽略所有 UNACTIVE 结果。如果用户只有一个 UNACTIVE 段,则为 UNACTIVE。
顺便说一句,我尝试应用 first_value(在另一篇文章的帮助下),但这不是我理想的结果:FIRST_VALUE((segment) IGNORE NULLS) OVER (PARTITION BY translate_userID ORDER BY dateTime desc) newSegment_transformedUserID。如果我在 over partition by 中使用初始用户 ID,则会得到错误的结果,如字段 newSegment_initialUserID 中所示。
我已经尝试了好几个小时... :(
【问题讨论】:
-
我很困惑。您是要计算转换后的列,还是新的段列或两者兼而有之?当您的示例显示来自过去和未来的数据时,您为什么说您想要 previous 值。
-
嗨@戈登林诺夫!我正在尝试计算列段,最终结果应如列所需的段所示。逻辑是:如果用户有一个段不同于“非活动”-> 然后检索他在上次访问中拥有的段,忽略所有“非活动”结果。如果用户只有一个“非活动”段,则为“非活动”。
标签: sql replace google-bigquery