使用按日期范围分组的django聚合到较低分辨率

kra*_*aiz 5 sql django average date-range aggregation

可怕的标题,但让我解释一下:我有这个django模型包含一个时间戳(日期)和要记录的属性 - fe消耗一些资源的用户数 - (值).

class Viewers(models.Model):
    date = models.DateTimeField()
    value = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

对于每10秒,该表包含用户数.这样的事情:

| date | value |
|------|-------|
|  t1  |   15  |
|  t2  |   18  |
|  t3  |   27  |
|  t4  |   25  |
|  ..  |   ..  |
|  t30 |   38  |
|  t31 |   36  |
|  ..  |   ..  |
Run Code Online (Sandbox Code Playgroud)

现在我想从这些数据中生成不同的统计数据,每个数据都有另一个分辨率 对于最后一天的图表,我不需要10秒的分辨率,所以我想要5分钟的步骤(通过平均从t1到t29,t30到t59的行的值(也可能是日期)来构建, ...),所以我会得到:

| date | value |
|------|-------|
|  t15 |   21  |
|  t45 |   32  |
|  ..  |   ..  |
Run Code Online (Sandbox Code Playgroud)

保持变量的属性是开始和结束时间戳和分辨率(如5分钟).有没有办法使用django orm/queryset api,如果没有,如何使用自定义sql达到此目的?

Tim*_*ony 1

你看过范围过滤器吗?

https://docs.djangoproject.com/en/dev/ref/models/querysets/#range

文档中给出的示例似乎与您的情况类似。