in 1.1, _sum will work for arrays of numbers too (rather than concatenating them as above). for now, just loop over the array of arrays and do the sum yourself.
On Mon, Jan 31, 2011 at 1:02 AM, Keith Gable <[email protected]> wrote: > It sounds like you need a new view for each piece of data. > > by_answered, by_busy, by_time_to_answer, etc. > > Then you'd query each view to get the reduction, and the reduce would be as > simple as _sum. > > > > On Jan 30, 2011, at 5:55 PM, John <[email protected]> wrote: > >> Hi >> >> I'm looking to extend our usage of couchdb by replacing our mysql >> reporting db. >> Whilst using couchdb successfully for a number of varied use cases I've >> never had to do much with reduce so I'm unsure on how to use it to reduce an >> array of values. >> >> Basically I want to be able to search a database using a composite key and >> retrieving some aggregated information about number of calls, call status, >> avg time to answer and avg duration >> >> >> The following view shows how I'd like it to work: >> >> Key = <Application, Account, Subscription> >> Value = <1, answered, busy, noreply, time to answer, duration> >> >> e.g. >> >> ["NTS", "NetDev", "MySub1"], [1,1,0,0,100,200] >> ["NTS", "NetDev", "MySub1"], [1,1,0,0,150,400] >> ["NTS", "NetDev", "MySub1"], [1,1,0,0,170,500] >> ["NTS", "NetDev", "MySub1"], [1,0,1,0,0,0] >> ["NTS", "NetDev", "MySub1"], [1,0,1,0,0,0] >> ["NTS", "NetDev", "MySub1"], [1,0,0,2,0,0] >> ["NTS", "NetDev", "MySub1"], [1,0,0,2,0,0] >> >> My Reduced output should look like this: >> >> [7,3,2,2,420,1100] >> i.e. 7 calls in total, 3 answered, 2 busy, 2 no reply, the total time for >> time to answer is 420 and the total time for call duration is 1100. >> >> I can then compute the two averages after getting the data back from couch >> i.e. 420/no. of answered calls(3) and 1100/no. of answered calls(3) >> >> I thought that sum(values) would do this for me but it just upsets couch: >> >> Reduce output must shrink more rapidly: Current output: >> '["001,11,11,11,11,11,11,11,11,11,11,101,11,11,11,11,11,11,11,11,11,11,11,101,11,11,11,11,11,11,11,11'... >> (first 100 of 277 bytes) >> >> What should my reduce function look like? >> >> Thanks >> >> John >
