这无疑是另一个愚蠢的问题,但无论如何我都会问:
我有一个事件数据集,其中包含精确的UTC日期时间。我想创建一个折线图,显示指定日期范围内按天(日期)的事件总数。现在我可以检索所需日期范围的总数据集,但之后我需要仔细检查并计算每个日期。
该应用正在谷歌应用引擎上运行,正在使用python。
创建新数据集的最佳方法是什么,显示日期和相应的计数(包括那个日期没有事件),然后我可以使用它将这些信息传递给django模板?
此示例的数据集如下所示:
class Event(db.Model):
event_name = db.StringProperty()
doe = db.DateTimeProperty()
dlu = db.DateTimeProperty()
user = db.UserProperty()
理想情况下,我想要一些日期和数量的日期。
谢谢,如果需要其他东西来回答这个问题,请告诉我!
答案 0 :(得分:1)
您必须在内存中进行分箱(即在数据存储区提取后)。
.date()
实例的datetime
方法将有助于您的分箱;它切断了时间元素。然后你可以使用字典来保存垃圾箱:
bins = {}
for event in Event.all().fetch(1000):
bins.setdefault(event.doe.date(), []).append( event )
然后按照您的意愿(例如计算)垃圾箱。直接计算:
counts = collections.defaultdict(int)
for event in Event.all().fetch(1000):
counts[event.doe.date()] += 1
答案 1 :(得分:0)
由于GQL一般不支持GROUP BY或aggregation,我无法看到单一查询的可行性。
答案 2 :(得分:0)
为了尽量减少您的工作量,您可能希望编写一个总计每天总计一次的任务,以便您可以重复使用它们。我建议使用bulkupdate library运行一天一次的任务来计算前一天的事件,并创建一个新的模型实例,其中包含基于日期的键名,包含计数。然后,您可以通过对所需的摘要实体集进行查询(或更好,批量获取)来获取所有需要的数据点。