以下のフォーマットのデータがあります。
タイプC_IDAssitorCollectionDateグラニュライトカウンター
A a 10 08-08-2012 00:00 15 0.9912378
B a 5 08-08-2012 00:00 15 0.1860929
C b 4 08-08-2012 00:00 15 0.5345317
教義と聖約108-08-201200:15 15 0.8656529
E b 1 08-08-2012 00:15 15 0.3249502
A a 10 08-08-2012 00:15 15 0.3743117
B a 5 08-08-2012 00:30 15 0.2608622
C b 4 08-08-2012 00:30 15 0.0079308
教義と聖約108-08-201200:30 15 0.7094781
E b 1 08-08-2012 00:45 15 0.6133461
A a 10 08-08-2012 00:45 15 0.3035875
B a 5 08-08-2012 00:45 15 0.6093015
C b 4 08-08-2012 01:00 15 0.4104008
教義と聖約108-08-201201:00 15 0.1687753
E b 1 08-08-2012 01:00 15 0.6627076
A a 10 08-08-2012 01:15 150.1901386....。
等々..
このテーブルで1時間ごとにインクリメンタルmapreduceを実行したいです。CollectionDateは、レコードがいつ来るかを示すフィールドです。しかし、c#.netで必要なこのコードはすべて
mapReduceを実行しましたが、問題は15分ごとに3レコード、1時間ごとに12レコードを取得しており、1時間後にこれらの15レコードが削減されます。次の1時間後に、残りのレコードも同じ基準で削減されます。
これについては、c#.netでのみサポートを受けることができますか。過去20日間から深刻な問題に直面しています。
その余分なcsvファイル..レコードを取得している場所から..nmongodbでc#を使用してmongodbに挿入すると、次のようになります:{"_id":a324b2f89d2e98fa21f、 "Type":A、 "C_ID":a、 "assitor":10、 "CollectionDate":08-08-2012 00:00、 "Granulity":15、 "Counter":0.1901386} {"_id":a324b2f89d2e98a216f、 "Type":B、 "C_ID":a、 "assitor":10、 "CollectionDate":08-08-2012 00:00、 "Granulity":15、 "Counter":0.1233542} {"_id":a324b2f89d2e98a3f2c、 "Type":A、 "C_ID":b、 "assitor":12、 "CollectionDate":08-08-2012 00:15、 "Granulity":12、 "Counter":0.8134552} {"_id":a324b2f89d2e98b4e2d、 "Type":B、"C_ID":b、 "assitor":12、 "CollectionDate":08-08-2012 00:15、 "Granulity":12、 "Counter":0.3218547}
OutputFile:{"_id":a8f3e231d456a675b23c、 "CollectionDate":08-08-2012 00:00 "AvgCounter":} {"_id":a8f3e232456a675a42cd、 "CollectionDate":08-08-2012 01:00 "AvgCounter":} {"_id":a8f3e231d46a67a0b4d2、 "CollectionDate":08-08-2012 02:00 "AvgCounter":}
毎時集計を意味します。
私がやったことまで...
private static void MapReduce(MongoDatabase db, String collName, BsonValue bsonValue, DateTime oldDateTime, DateTime newDateTime)
{
var collection = db.GetCollection<BsonDocument>(collName);
Console.WriteLine(TotalReduction++);
String map = @"function() {
var sample = this;
emit(sample.CollectionDate, {CID: sample.C_ID, count:1, CollectionTime: sample.CollectionDate});
}";
String reduce = @"function(key, values) {
var result = {CID: '', count:0};
values.forEach(function(value){
result.CID += value.CID;
result.count += value.count;
result.CollectionTime = value.CollectionTime;
});
return result;
}";
var options = new MapReduceOptionsBuilder();
IMongoQuery[] queries = { Query.EQ("CollectionTime", bsonValue) };
options.SetOutput(MapReduceOutput.Inline);
IMongoQuery query = Query.And(queries);
var results = collection.MapReduce(queries[0], map, reduce);
collection = db.GetCollection<BsonDocument>("MSS_REDUCE");
IEnumerable<BsonDocument> bdoc = results.GetResultsAs<BsonDocument>();
collection.InsertBatch<BsonDocument>(bdoc);
}
ありがとうRaviSharma