我目前正在使用Python在Google App Engine上构建一个Web应用程序来收集表单的赛马数据。基本数据结构是课程有很多会议有很多种族有很多马有一个赛马会和一个培训师。到目前为止,我已经得到了以下模型(为了简洁起见,减少了数量)。
class Course(db.Model):
course_number = db.IntegerProperty() # course id (third party)
course_description = db.StringProperty() # course name
class Meeting(db.Model):
course = db.ReferenceProperty(Course) # reference to course
meeting_number = db.IntegerProperty() # lifetime meeting number for course
meeting_date = db.DateProperty() # meeting date
class Race(db.Model):
meeting = db.ReferenceProperty(Meeting) # reference to meeting
race_number = db.IntegerProperty() # eg 1 for 1st race of meeting
race_name = db.StringProperty() # race name
time_of_race = db.TimeProperty() # race time
我无法解决如何在数据存储中的Horses,Trainers,Jockeys上存储数据的问题。
我的应用程序将收集过去2年的数据,为此我将保存马,培训师,赛马会的相关结果信息。在该时间点,关于特定马匹结果的信息对于训练师和骑师来说是相同的。然而,随着时间的推移,马可以拥有不同的训练师和不同的骑师。
当我意识到在分析中我可能需要查看马,赛马,训练师的最后10场比赛的结果时,我的主要脑痛即将来临。结果可能无法存储,因为结果发生在英国赛车之外(数据仍然可用)或在我开始完成比赛存储之前发生。
任何人都可以了解如何优化Horse,Jockey,Trainer的存储结果以便我能够适应这种情况吗?
数据来源:http://form.horseracing.betfair.com/timeform 可以通过JSON请求轻松访问所有必需的数据。
答案 0 :(得分:0)
使用HorseResult,TrainerResult和JockeyResult模型,您走在正确的轨道上。不要忘记,数据存储区没有分组或聚合函数,因此您可能希望在加载数据时预先计算任何感兴趣的聚合或统计信息。
也许您还希望拥有统计类型模型,用于跟踪马匹,骑师和训练师的表现以及每种模式的组合。像HorseMonth这样的东西,它可以追踪马参与的种族数量以及它如何按月放置。
我还会考虑详细说明马匹和骑师,或马匹和教练的组合如何随着时间的推移而做。不幸的是,我对赛马的了解不足以为您提供有关哪些组合有意义的具体建议。
由于听起来这是一个主要供您自己使用的工具,您可以查看mapper API。在探索数据时,它可能具有很大的价值。
如果您的数据中不包含比赛,除了扩大收获范围外,您可能无法做很多事情。您可能只想返回您的结果,也许某些事情表明日期范围内没有足够的数据?