User、Company、Visit という 3 つの基本モデルがあるとします。ユーザーが会社に行くたびに、訪問がこの形式で記録されます(user_id, company_id, visit_date)
。
会社の訪問間の平均時間を計算できるようにしたいと考えています。全体的な訪問数ではなく、具体的には、顧客の 1 人が店舗に戻るまでの平均待ち時間です。
たとえば、火曜日、水曜日、金曜日に 1 人のユーザーがアクセスした場合、1 日の「ギャップ」と 2 日の 1 つの「ギャップ」が得られます => (1, 2)。別のユーザーが月曜日と金曜日にアクセスした場合、4 日間のギャップが 1 つ発生します => (4)。3 番目のユーザーが 1 回だけ訪問した場合、そのユーザーは考慮されません。会社のユーザー訪問間の平均時間は (1 + 2 + 4) / 3 = 2.333 日です。
何千ものユーザー、タップ、企業があり、それぞれの企業について 1 つの数字を計算したい場合、どうすればよいでしょうか? 以前は基本的な MapReduce アプリケーションしか実行したことがなく、これを実行するために Map と Reduce の手順がどうなるかわかりません。疑似コードで MapReduce を理解するのを手伝ってくれる人はいますか? または、合理的に実行できる分散計算の他の方法はありますか? 記録のために、毎晩データベースでこの操作を実行したいと思います。