Hive 配置单元-基于当前值替换下一条记录的值
我的数据集如下图所示 当is_session_change值为真时,我将填充session列的新值,并希望将该会话值带到is_session_change列的下一个真值。 例如下图- 列expected\u session是预期值。如果有人能帮忙,请告诉我!!提前谢谢。 实际上,我每小时都在处理数据,对于特定的运行,我正在处理当前小时数据加上最后一小时数据,所以最后一小时数据将正确附加会话id,现在我正在尝试扩展这些会话id,以获得当前小时内符合条件的记录,如果记录不符合扩展条件,我将生成新的会话id 我尝试了下面的方法,在会话列中填充了值-Hive 配置单元-基于当前值替换下一条记录的值,hive,hiveql,Hive,Hiveql,我的数据集如下图所示 当is_session_change值为真时,我将填充session列的新值,并希望将该会话值带到is_session_change列的下一个真值。 例如下图- 列expected\u session是预期值。如果有人能帮忙,请告诉我!!提前谢谢。 实际上,我每小时都在处理数据,对于特定的运行,我正在处理当前小时数据加上最后一小时数据,所以最后一小时数据将正确附加会话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
您已经有了根据会话对值进行分组的引用列。使用
case
表达式将-1
值设置为null
,并使用max
窗口函数获取预期的会话值
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
选择w.*,最大值(会话-1然后会话结束时的情况)
超出(按唯一访问者划分,出现)预期的\u会话
来自mktg_web.web_session_final w
您尝试过解决它吗?如果是这样,请向我们展示您的尝试。谢谢您的回复,我已经用我的尝试更新了问题。