特定の Appengine Datastore フィールドから 7 日間の追跡統計を表示しようとしています。モデルに整数フィールド「Foo」がある場合、過去 7 日間の Foo の増加によって上位 N 個のモデルを見つけられるようにしたいと考えています。
例によって説明するのが最善だと思います。Foo フィールドを持つ 2 つのエンティティがあり、毎日午前 0 時に 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 を照会できます。
この問題は、ユーザーごとに Foo1 Foo2 Foo3 ... Foo7 のように 7 つの余分なエントリを保持することで解決できます。また、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 です。
誰かがより良いアイデアを持っていますか? ありがとう!