couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Keith Gable <ziggythehams...@gmail.com>
Subject Re: Reporting aggregated data using reduce function
Date Mon, 31 Jan 2011 01:02:16 GMT
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 <john.logsdon@netdev.co.uk> 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

Mime
View raw message