Mongodb と MapReduce を使用して、500 万行を超える売上明細を約 6 万行に集約することに成功しました。結果には非常に満足していますが、結果を合計するのではなく結果を連結したように見える結果の1行に戸惑っています。
誰もこれを経験したことがありますか?
生のステートメントに含まれる行を詳細に分析すると、それらがまったく同じであるように見えるため、原因となったものは何もわかりません。合計された同じ識別子の値もあります。
私のコードは次のとおりです。誰かがそれを引き起こしている可能性があるものを見つけることができますか? 私が言うように、それは 520 万の生のステートメントからわずか 7 行なので、精度はかなり良いです。
mongoimport -d test -c sales --type csv --file sales_rawdata.csv --headerline
var mapFunction1 = function() {
emit({video_id: this.video_id, isrc: this.isrc, country: this.country}, this.amount_payable);
};
var reduceFunction1 = function(keyIsrc, valuesAmountPayable) {
return Array.sum(valuesAmountPayable);
};
db.sales.mapReduce(
mapFunction1,
reduceFunction1,
{ out: "sales_total_by_country_and_isrc" }
)
db.sales_total_by_country_and_isrc.find()
mongoexport --csv -d test -c sales_total_by_country_and_isrc -q '{value: {$ne: 0}}' -f "_id.video_id","_id.isrc","_id.country","value" -o sales_total_by_country_and_isrc.csv