MongoDB MapReduce 實戰<4>

來源:互聯網
上載者:User
有了昨天的順利,今天就更有信心了,今天要做的是取得區間記錄數,為前台統計圖表準備資料,舉例來說效果就是,
在1天內出現了XX次,在2天內出現了XX次,在3天內出現了XX次 (不包括上一區間的資料)
分析了一下,可以在昨天的第二個步驟獲得的資料進行操作(ttt_date_out表,資料內容形如{ID:1,Times:[1,2,3,....]}),Map和Reduce也和昨天的類似 編寫Map
function Map() {var times = this.value.times;if(times){if(times.length > 1){for(var i = 0;i < times.length;i++){if(i != times.length - 1){var between_time = times[i] - times[i+1];// 向上取整,1.4,1,7都會變成2,意思表示為“兩天內”var day = Math.ceil(between_time / (1000 * 60 * 60 * 24));emit(day, 1); }}}}}
編寫Reduce
function Reduce(key, values) {var reduced = {key:key, count:0};values.forEach(function(val) {reduced.count++; });return reduced;}
得到結果,達到預期,但還是不太理想,對於只有一次map的資料和多次map的資料,結果表示有點不一樣
公司上不了Google,就只能問度娘了,無解,自己來吧,想到了昨天用到的Finalize 編寫Finalize
function Finalize(key, reduced) {if(reduced.count){return reduced.count;}else{return reduced;}}
浪費了一些時間,不過船小好調頭,例子小好瞎試,最終效果
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.