gpt4 book ai didi

sql - 你能在 RDBMS 中 session 化网络日志吗

转载 作者:可可西里 更新时间:2023-11-01 16:31:42 27 4
gpt4 key购买 nike

只是一个一般性的问题。您可以在 RDBMS 中 session 化日志吗?

例如,假设您只有三列 1) 时间戳 2) URL 3) 用户 ID 是否可以根据传统 RDBMS 中的 X 分钟事件来 session 化日志。输出可能看起来像四列 1) 时间戳 2) URL 3) 用户 ID 4) session ID。

我假设不是,但想听听其他人的意见。

谢谢

最佳答案

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

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

某些 DBMS(例如 Vertica 和 Aster)支持使用内置函数进行 session 化,而在其他数据库管理系统中,您可能会实现用户定义的函数。

关于sql - 你能在 RDBMS 中 session 化网络日志吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com