sql—您能在rdbms中对Weblog进行会话化吗

py49o6xq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(381)

只是一个一般性的问题。您能在rdbms中对日志进行会话化吗?
例如,假设您只有三列1)时间戳2)url 3)userid在传统rdbms中是否可以基于x分钟的活动对日志进行会话化。输出可能看起来像四列1)时间戳2)url 3)userid 4)sessionid。
我想不是,但我想听听别人的意见。
谢谢

jv2fixgn

jv2fixgn1#

这有点棘手,但可以使用嵌套的窗口聚合函数(如

SELECT timestamp, UserID, URL,
   SUM(newSession) -- cumulative sum over 0/1
   OVER (PARTITION BY UserId
         ORDER BY timestamp
         ROWS UNBOUNDED PRECEDING) AS SessionID
FROM
 (
   SELECT 
      ts_col, UserID, URL,
      -- calculate the timestamp difference between current and previous row
      CASE WHEN timestamp - LAG(timestamp) 
                            OVER (PARTITION BY UserId 
                                  ORDER BY timestamp) > INTERVAL 'X minutes' 
           THEN 1  -- new session starts
           ELSE 0  -- part of the old session
      END AS newSession
 ) AS dt

一些dbmse(例如vertica和aster)支持使用内置函数进行会话,而在其他dbmse中,您可以实现用户定义的函数。

相关问题