улей - заменить значение следующей записи на основе текущего значения - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть набор данных, как показано на изображении ниже enter image description here

Когда значение is_session_change равно true, я заполняю новое значение для сеанса столбца, и я хочу перенести это значение сеанса до следующего ИСТИННОГО значения is_session_change столбца.Например, изображение ниже - enter image description here

Столбец Ожидаемая_сессия - это ожидаемое значение.Пожалуйста, дайте мне знать, если кто-нибудь может помочь!Заранее спасибо.На самом деле я обрабатываю данные ежечасно, и для определенного прогона я обрабатываю данные текущего часа плюс данные последнего часа, поэтому данные последнего часа будут иметь правильно прикрепленные идентификаторы сеансов, теперь я пытаюсь расширить эти идентификаторы сеансов для подходящих записей в текущем часе,Если запись не может быть расширена, я генерирую новый идентификатор сеанса.

Я попробовал следующий подход, который заполнил значения в столбце сеанса -

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

1 Ответ

0 голосов
/ 26 сентября 2018

У вас уже есть столбец вхождения для группировки значений на основе сеанса.Используйте выражение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...