我在Chartkick中使用累积图表时遇到了一个问题。目前,在Ruby中构建图表的方式如下:
errors = Error.where(status: 'active')
sum = errors.where('first_occurrence_date <= ?', Time.zone.today - 30.days).count
line_chart errors.group_by_day(:first_occurrence_date, last: 30).count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)
我有一个外部服务,它向我提供Rails应用程序上发生的错误,我使用API调用收集这些错误,并将它们存储在数据库中。
问题是,这些错误的状态可能是Resolved
或Active
。在外部平台上,当我认为我已经处理了bug时,我有可能“解决”这些错误。因此,状态从active
-〉resolved
所有这些错误都有一个第一次发生的时间戳,我在此基础上构建图表。
Monday => 0 errors
Tuesday => 10 errors occurring for the first time
Wednesday => 2 errors (which occurred on tuesday) resolved (active -> resolved) => total of 8 active errors
Thursday => 4 errors occurring for the first time
Friday => 1 error which occurred on Thursday solved, and 1 on Tuesday solved
我的图表在星期三将具有以下值
Monday => 0
Tuesday => 7
Wednesday => 7
Thursday => 10
Friday => 10
(因为我只提取图表中处于活动状态的错误)
我想要的是:
Monday => 0
Tuesday => 10
Wednesday => 8
Thursday => 12
Friday =>10
我已经想了一会儿怎么办,却找不到解决的办法,谁有办法解决这个问题?
多谢了!
1条答案
按热度按时间taor4pac1#
我认为,如果只有首次发生的时间戳和当前状态,则不可能获得累积数据。
如果错误是在某一天之前或当天创建的,并且在该天之后未解决或未解决,则该错误将被视为该天的
active
。因此,您的查询将是:Cronjob:在一天结束时运行
然后只需查询图表