【发布时间】:2021-11-14 01:36:55
【问题描述】:
我有一个模特EventData
class EventData(models.Model):
id = models.BigAutoField(primary_key=True)
created = models.DateTimeField()
session = models.ForeignKey(EventSession, on_delete=models.CASCADE)
name = models.ForeignKey(EventName, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
value = models.CharField(max_length=200)
还有一个查询
event_volume = IngestModels.EventData.objects.filter(product=my_product, created__date=selected_date)
.annotate(hour=TruncHour('created'))
.annotate(event_count=Count('*'))
.values("hour", "event_count")
产生类似的结果
| hour | event_count |
|---|---|
| 2021-11-12 00:00:00 | 2 |
| 2021-11-12 01:00:00 | 2 |
| 2021-11-12 02:00:00 | 7 |
| 2021-11-12 05:00:00 | 5 |
| 2021-11-12 06:00:00 | 9 |
| 2021-11-12 09:00:00 | 10 |
| 2021-11-12 10:00:00 | 1 |
| 2021-11-12 12:00:00 | 9 |
您会注意到有时没有发生任何事件,因此行中省略了小时。如果没有发生任何事件,我真的希望每个小时都在场,0 在event_count 列中。所以像:
| hour | event_count |
|---|---|
| 2021-11-12 00:00:00 | 2 |
| 2021-11-12 01:00:00 | 2 |
| 2021-11-12 02:00:00 | 7 |
| 2021-11-12 03:00:00 | 0 |
| 2021-11-12 04:00:00 | 0 |
| 2021-11-12 05:00:00 | 5 |
| 2021-11-12 06:00:00 | 9 |
| 2021-11-12 07:00:00 | 0 |
| 2021-11-12 08:00:00 | 0 |
| 2021-11-12 09:00:00 | 10 |
| 2021-11-12 10:00:00 | 1 |
| 2021-11-12 11:00:00 | 0 |
| 2021-11-12 12:00:00 | 9 |
任何帮助将不胜感激!我使用 PostgreSQL 作为我的数据库。
【问题讨论】:
标签: python django postgresql