Свернуть разреженный стол в Vertica

Я использую Vertica.

Проблема: у меня есть разреженная таблица (user_session_tmp2). Строка содержит session_token и список (около 15 полей) параметров. Несколько строк могут описать один session_token. Мне нужно получить таблицу, где только одна строка описывает одну сессию (т.е. объединить все данные за одну сессию в одну строку)

Очевидное решение:

merge /*+ direct */ into user_session tgt using user_session_tmp2 src on src.session_token=tgt.session_token 
when matched then 
    update set time = (case when src.time> tgt.time then tgt.time else src.time)
               device_id = (case when src.device_id is not null then src.device_id else tgt.device_id) 
when not matched then 
    insert values(src.session_token, src.user_id, src.time, src.client_time, src.device_id, src.app_version, ... );

К сожалению, в запросе на обновление нельзя использовать выражение регистра.

1 ответ

Решение

Не могли бы вы попробовать следующее решение:

    select session_token, max(col1), max(col2),.., max(colN) 
      from user_session
  group by session_token
Другие вопросы по тегам