Friday, October 29, 2010

Re: How to aggregate values by month

Hi !

You could also give django-cube a try :
http://code.google.com/p/django-cube/
Unlike Mikhail's app, the aggregates are not efficient (because no
optimization is made, I am working on this), but this is more than
enough if you have a reasonable amount of data (less than millions of
rows !!!).
Use the following code, and you should have what you need :

from cube.models import Cube

class SalesCube(Cube):

month = Dimension('date_created__absmonth',
queryset=Sale.objects.filter(date_created__range=(init_date,ends_date)))

@staticmethod
def aggregation(queryset):
return queryset.count()

The advantage is that if you want to add more dimensions (type of sale/
place/month, etc ...), you can do it very easily.
Hope that helps, and don't hesitate to ask me if you can't have it
working (documentation is not very good yet).

On Oct 29, 12:54 am, Mikhail Korobov <kmik...@googlemail.com> wrote:
> Hi Rogério,
>
> You can givehttp://bitbucket.org/kmike/django-qsstats-magic/srca
> try.
> It currently have efficient aggregate lookups (1 query for the whole
> time series) only for mysql but it'll be great if someone contribute
> efficient lookups for other databases :)
>
> On 28 окт, 19:31, Rogério Carrasqueira
>
> <rogerio.carrasque...@gmail.com> wrote:
> > Hello!
>
> > I'm having an issue to make complex queries in django. My problem is, I have
> > a model where I have the sales and I need to make a report showing the sales
> > amount per month, by the way I made this query:
>
> > init_date = datetime.date(datetime.now()-timedelta(days=365))
> > ends_date = datetime.date(datetime.now())
> > sales =
> > Sale.objects.filter(date_created__range=(init_date,ends_date)).values(date_ created__month).aggregate(total_sales=Sum('total_value'))
>
> > At the first line I get the today's date past one year
> > after this I got the today date
>
> > at sales I'm trying to between a range get the sales amount grouped by
> > month, but unfortunatelly I was unhappy on this, because this error
> > appeared:
>
> > global name 'date_created__month' is not defined
>
> > At date_created is the field where I store the information about when the
> > sale was done., the __moth was a tentative to group by this by month.
>
> > So, my question: how to do that thing without using a raw sql query and not
> > touching on database independence?
>
> > Thanks so much!
>
> > Rogério Carrasqueira
>
> > ---
> > e-mail: rogerio.carrasque...@gmail.com
> > skype: rgcarrasqueira
> > MSN: rcarrasque...@hotmail.com
> > ICQ: 50525616
> > Tel.: (11) 7805-0074
>
>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment