[編集して、コメントを追加いくつかの追加の関連情報]私はこのシナリオを使用して、最良の取引を知っていただきたいと思いベストプラクティスの間-2-日付/ 2-期間は、アルゴリズム
まとめます。各値を反復する代わりに(またはgroupbyで合計する)、私は1つの "最後/最初の違い"メソッドを必要とします。
サンプル ここでの範囲は日付を考慮しています(ただし、月、分、曜日など)時間)
範囲の各ステップ間の値の和を取得し計算する
Fetchcedデータ:この表
<missing>
2011-01-02 4.5 user1
2011-01-02 1.5 user2
2011-01-03 4.7 user1
2011-01-03 1.6 user2
2011-01-04 4.9 user1
2011-01-04 1.7 user2
2011-01-05 6.1 user1
2011-01-05 1.8 user2
<missing>
2011-01-06 1.9 user2
2011-01-07 6.5 user1
2011-01-07 2.0 user2
2011-01-08 6.9 user1
2011-01-08 2.1 user2
2011-01-09 7.0 user1
2011-01-09 2.2 user2
<missing>
<missing> ..
値が累積順序である番目をいいます。 eyは、ベンが数回始動/停止したタイマーのようにインクリメントされますが、決してREを開始しませんでした。
範囲get 20110101--20110131"
を頼まれた場合は、この方法の正確な期間が要求されたget 20110107
を頼まれた場合の答え"2011-01-01 3,2"
は、方法は"2011-01-07 0.5"
を答えるでしょう。 20110708 user1 6.9
マイナス20110707 user1 6.5
== 0.4および20110708 user2 2.1
マイナス20110707 user2 2.0
== 0.1であるため、結果は0.5です。次に0.4 + 0.1
を追加します。
計算された最後の/最初の値の配列を返すときに問題になります。指定した範囲20110101_20110131の各日の合計を範囲内の各日に実行する必要がある場合は、"sum between last/first value"
を実行する必要があります。
結果の範囲内でこの
2011-01-02 0.3
2011-01-03 0.3
2011-01-04 1.3
2011-01-05 0
2011-01-06 0.1
2011-01-07 0.5
2011-01-08 0.2
2011-01-09 0
2011-01-10 0
2011-01-11 0 ..
欠落期間(日)のように、結果としてゼロにつながります。つまり、20110104_20110105の合計がゼロ以外の値になることはできません(欠損値のため)。ただし、20110104-20110107の間に合計をとると、間に欠けている値が認識されません。
おそらくそれは私だけですが、私はそれを得られません。私はあなたの質問を3回読んだだけで、それは私には感知しません。あなたの意図を言い換えて、明確にしてください。 –
私は試してみてください、 – Independent
@Jonas、あなたは 'get 20110107' =' 2011-01-07 0.5'の仕方を説明することから始めることができます。多分それが私たちの理解を助けるでしょう。 – ANeves