2012-08-08 89 views
1

我试图从某个Appengine Datastore字段中显示7天的追踪统计信息。如果我的模型有一个整数字段“Foo”,我希望能够在过去7天内通过Foo的增加找到前N个模型。追踪Appengine Datastore中的“追踪”每日统计信息

我认为最好以实例来解释。假设我们有两个实体与一个Foo领域,我们品尝的Foo每天午夜值:

Day  01 02 03 04 05 06 07 08 09 10 11 12 13 
User1.Foo 1 2 3 4 5 6 7 8 9 8 7 6 5 
User2.Foo 50 55 50 45 50 55 50 45 50 55 50 45 50 

我希望能够构建(每天)为期7天的三角洲:

Day  01 02 03 04 05 06 07 08 09 10 11 12 13 
User1.FooDelta7d   6 6 6 4 2 0 -2 
User2.FooDelta7d   0 -10 0 10 0 -10 0 

并且能够查询用户ORDER BY FooDelta7d。

我可以保持每个用户7个额外的条目,比如Foo1 foo2的Foo3 ... Foo7解决这个问题,并采取年7模的日子,决定在午夜写入到哪个入口:

Day  01 02 03 04 05 06 07 08 09 10 11 12 13 
User1.Foo 1 2 3 4 5 6 7 8 9 8 7 6 5 
User1.Foo1 1 1 1 1 1 1 1 8 8 8 8 8 8 
User1.Foo2 2 2 2 2 2 2 2 9 9 9 9 9 
User1.Foo3  3 3 3 3 3 3 3 8 8 8 8 
User1.Foo4   4 4 4 4 4 4 4 7 7 7 
User1.Foo5    5 5 5 5 5 5 5 6 6 
User1.Foo6    6 6 6 6 6 6 6 5 
User1.Foo7     7 7 7 7 7 7 7 

因此(比如说)第10天,三角洲是User1.Foo3 - User1.Foo4 = 8 - 4 = 4。这种方式对我来说似乎非常重要,尤其是因为这意味着我想跟踪每场的8倍存储。

有没有人有更好的主意?谢谢!

+0

“保留7个额外的条目”,你的意思是“保留7个额外的属性”? – 2012-08-08 06:29:39

+0

是的,谢谢。我的意思是保留7个额外的db.InteProProperty。但是Peter在下面指出,我可以把它变成一个ListProperty。 – DrTall 2012-08-08 23:34:24

回答

0

由于您需要每日滚动7天三角洲,因此您需要保留过去七天的数据。所以看来你已经做的是正确的。

要降低“粗糙度”,您可能需要将Foo1..Foo7设为list property