0

我的自定义 Web 服务器以挂钟时间戳(会话开始)和会话持续的墙壁点击秒数的形式报告会话信息。

我想以一种允许我查询特定实体在特定时间的会话数的方式将此信息存储在数据仓库(MySQL + 启动模式)中。一个要求是我们必须能够提取将馈送到图表的时间序列数据。

除了为会话的每一秒插入一行之外,还有其他存储数据的方法吗?

4

1 回答 1

0

我想说最简单的方法是在事实表中使用 StartTime、EndTime 存储每个会话的一行。

假设我们有factSession

  ( 
   ...
  ,SessionID int
  ,StartTime datetime
  ,EndTime datetime
  ,EntityID int
   ...
  ) ;

TimeSeries TABLE ( TimePoint datetime ) ;

你可以:

SELECT  t.TimePoint
       ,f.EntityID
       ,COUNT(f.SessionID) AS cnt
FROM    TimeSeries AS t
        LEFT JOIN factSessions AS f ON ( f.StartTime <= t.TimePoint
                                          AND t.TimePoint <= f.EndTime
                                        )
GROUP BY t.TimePoint ,f.EntityID
ORDER BY t.TimePoint
于 2010-01-02T14:19:18.707 回答