当 is_session_change 值为true时,我正在为 session 列填充新值,并且我希望将该会话值一直保留到 is_session_change 的下一个TRUE值为止。 strong>列。 例如下图-
期望值_session列是期望值。请让我知道是否有人可以帮忙!提前致谢。 实际上,我每小时进行一次数据处理,特别是运行时,我正在处理当前时间数据以及过去一小时的数据,因此过去一小时的数据将正确地附加了会话ID,现在我正尝试将这些会话ID扩展为当前时间的合格记录,如果记录不符合扩展条件,我将生成新的会话ID。
我尝试了以下在会话列中填充值的方法-
select *,case when (session_id != '-1') then session_id
when (new_session = true) then getSessionId()
when (new_session =false AND session_id = '-1') then LAG(session_id) OVER (PARTITION BY uniquevisitor ORDER BY ts)
else '-' END as abc
from mktg_web.web_session_final
order by uniquevisitor
答案 0 :(得分:1)
您已经具有“发生次数”列,可以根据会话对值进行分组。使用case
表达式将-1
的值设置为null
,然后使用max
窗口函数来获取Expected_session的值。
select w.*,max(case when session <> -1 then session end)
over(partition by uniquevisitor,occurrence) as expected_session
from mktg_web.web_session_final w