Hive 配置单元-基于当前值替换下一条记录的值

Hive 配置单元-基于当前值替换下一条记录的值,hive,hiveql,Hive,Hiveql,我的数据集如下图所示 当is_session_change值为真时,我将填充session列的新值,并希望将该会话值带到is_session_change列的下一个真值。 例如下图- 列expected\u session是预期值。如果有人能帮忙,请告诉我!!提前谢谢。 实际上,我每小时都在处理数据,对于特定的运行,我正在处理当前小时数据加上最后一小时数据,所以最后一小时数据将正确附加会话id,现在我正在尝试扩展这些会话id,以获得当前小时内符合条件的记录,如果记录不符合扩展条件,我将生成新的会

我的数据集如下图所示

is_session_change值为真时,我将填充session列的新值,并希望将该会话值带到is_session_change列的下一个真值。 例如下图-

列expected\u 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

您已经有了根据会话对值进行分组的引用列。使用
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

您尝试过解决它吗?如果是这样,请向我们展示您的尝试。谢谢您的回复,我已经用我的尝试更新了问题。