couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Boaz Citrin <bcit...@gmail.com>
Subject Re: View question
Date Sun, 05 Oct 2014 08:24:26 GMT
ok so you suggest using a list function to aggregate the totals per group...
do you think this will give a better performance then a reduce that does
the same?

On Sun, Oct 5, 2014 at 11:04 AM, Stanley Iriele <siriele2x3@gmail.com>
wrote:

> Comparing numbers is much faster and cheaper space wise than strings
> On Oct 5, 2014 1:04 AM, "Stanley Iriele" <siriele2x3@gmail.com> wrote:
>
> > You would need a view... As I described earlier.... But BE SURE TO store
> > the UTC milliseconds on the doc...what...or use the getTime() function to
> > emit [ seconds, group]... And then your reduce would be _count.... Lastly
> > you will need to write a list function that aggregates over your results
> on
> > last time to get your desired output
> > On Oct 5, 2014 12:33 AM, "Boaz Citrin" <bcitrin@gmail.com> wrote:
> >
> >> how could I solve it if let's say it would be limited to the second?
> >>
> >> On Sun, Oct 5, 2014 at 10:07 AM, Stanley Iriele <siriele2x3@gmail.com>
> >> wrote:
> >>
> >> > Or can it be down to say....the hour... Or minute... Something like
> that
> >> > On Oct 4, 2014 11:53 PM, "Boaz Citrin" <bcitrin@gmail.com> wrote:
> >> >
> >> > > I need to filter by date and group by group...
> >> > >
> >> > > For example having these docs:
> >> > > {
> >> > >   "group" : "a",
> >> > >   "associated" : "2014-10-04T21:58:59.377Z",
> >> > >  ...
> >> > > }
> >> > > {
> >> > >   "group" : "a",
> >> > >   "associated" : "2014-10-03T21:58:59.377Z",
> >> > >  ...
> >> > > }
> >> > > {
> >> > >   "group" : "b",
> >> > >   "associated" : "2014-10-04T21:58:59.377Z",
> >> > >  ...
> >> > > }
> >> > > {
> >> > >   "group" : "b",
> >> > >   "associated" : "2014-10-01T21:58:59.377Z",
> >> > >  ...
> >> > > }
> >> > >
> >> > > I want to support a query with from-date =
> "2014-10-02T21:58:59.377Z"
> >> > > to-date= "2014-10-04T22:58:59.377Z"
> >> > >
> >> > > And the result will be -
> >> > >
> >> > > a, 2
> >> > > b, 1
> >> > >
> >> > >
> >> > >
> >> > >
> >> > > On Sun, Oct 5, 2014 at 9:36 AM, Stanley Iriele <
> siriele2x3@gmail.com>
> >> > > wrote:
> >> > >
> >> > > > Right ...are you saying... That you need grouping down to the
> >> day?...
> >> > In
> >> > > > which case you can just emit[ date, group]... The fate being
the
> >> > > > milliseconds truncated to the day and just have a reduce that's
> >> > > _count....
> >> > > > By the way the date can also be broken down to [year, month,
day,
> >> > group]
> >> > > >
> >> > > > You would need to change the group_level to 4 instead of 2 bit
the
> >> view
> >> > > > would be human readable.
> >> > > >
> >> > > > The truck here is that you query with start key ,end_key to get
> the
> >> the
> >> > > > days and re reduce those values again for that arbitrary date
> range
> >> in
> >> > a
> >> > > > reduce function and you should be good
> >> > > > On Oct 4, 2014 11:23 PM, "Boaz Citrin" <bcitrin@gmail.com>
wrote:
> >> > > >
> >> > > > > I need to get the count of document that were associated
to a
> >> group
> >> > > > between
> >> > > > > two given dates. Thanks!
> >> > > > >
> >> > > > > On Sun, Oct 5, 2014 at 8:13 AM, Stanley Iriele <
> >> siriele2x3@gmail.com
> >> > >
> >> > > > > wrote:
> >> > > > >
> >> > > > > > Hey what date are you looking to filter to? Day/ month..year?
> >> > > > > > On Oct 4, 2014 10:11 PM, "Boaz Citrin" <bcitrin@gmail.com>
> >> wrote:
> >> > > > > >
> >> > > > > > > Thanks Giovanni,
> >> > > > > > > You say I can get all the groups at the same time,
> >> > > > > > > but how can I achieve this and also filter by
date?
> >> > > > > > >
> >> > > > > > > On Sun, Oct 5, 2014 at 4:04 AM, Giovanni P <
> fiatjaf@gmail.com
> >> >
> >> > > > wrote:
> >> > > > > > >
> >> > > > > > > > You can use the second with group_level=1
and get all the
> >> > groups
> >> > > at
> >> > > > > the
> >> > > > > > > > same time.
> >> > > > > > > > And you can use _count instead of _sum, so
you don't even
> >> need
> >> > to
> >> > > > > emit
> >> > > > > > > any
> >> > > > > > > > value, just the key.
> >> > > > > > > >
> >> > > > > > > > On Sat, Oct 4, 2014 at 8:24 PM, Boaz Citrin
<
> >> bcitrin@gmail.com
> >> > >
> >> > > > > wrote:
> >> > > > > > > >
> >> > > > > > > > > Hello,
> >> > > > > > > > >
> >> > > > > > > > > My documents contain two fields to maintain
group
> >> > associations,
> >> > > > say
> >> > > > > > > > "group"
> >> > > > > > > > > holds the group document id, and "associated"
holds the
> >> date
> >> > > this
> >> > > > > > > > document
> >> > > > > > > > > was added to the group.
> >> > > > > > > > > Now I want to be able to know how many
documents were
> >> added
> >> > to
> >> > > a
> >> > > > > > given
> >> > > > > > > > > group[s] between two given dates.
> >> > > > > > > > > The challenge is that to be able to
filter by dates, I
> >> need
> >> > to
> >> > > > have
> >> > > > > > the
> >> > > > > > > > > date as the key first part.
> >> > > > > > > > > But I also need the group as the first
key part in order
> >> to
> >> > > > > aggregate
> >> > > > > > > the
> >> > > > > > > > > number of group associations.
> >> > > > > > > > >
> >> > > > > > > > > So I see two options here:
> >> > > > > > > > >
> >> > > > > > > > > 1.
> >> > > > > > > > > Map: associated, {"group": group}
> >> > > > > > > > > Reduce: a function that aggregates all
values by group,
> >> > which I
> >> > > > > > assume
> >> > > > > > > is
> >> > > > > > > > > fine as I know the number of groups
is relatively small.
> >> > > > > > > > > (plus configuring reduce_limit=false
...)
> >> > > > > > > > >
> >> > > > > > > > > 2.
> >> > > > > > > > > Map: [group,associated], 1
> >> > > > > > > > > Reduce: sum(values)
> >> > > > > > > > > Here I cannot retrieve multiple groups
at once, so I
> use a
> >> > > > request
> >> > > > > > per
> >> > > > > > > > > desired group.
> >> > > > > > > > >
> >> > > > > > > > > Tried the two approaches, with the first
one gives
> faster
> >> > > > response.
> >> > > > > > > Which
> >> > > > > > > > > leads me to two questions:
> >> > > > > > > > > 1. Is there any risk in a reduce function
that produces
> a
> >> > > > > potentially
> >> > > > > > > > long
> >> > > > > > > > > string?
> >> > > > > > > > > 2. Is there a better way to achieve
what I do here?
> >> > > > > > > > >
> >> > > > > > > > > Thanks!
> >> > > > > > > > >
> >> > > > > > > > > Boaz
> >> > > > > > > > >
> >> > > > > > > >
> >> > > > > > >
> >> > > > > >
> >> > > > >
> >> > > >
> >> > >
> >> >
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message