I was able to get the aggregate by passing the resulting rows to 
numberify_results, though I really don't understand why that was necessary, 
as an API it makes it quite confusing, so maybe I'm still not fully 
grasping how beanquery works, but at least I got past that

to put the full example for posterity:


import beanquery

query = '''SELECT sum(position)
WHERE date <= 2024-04-01
  AND account ~ "Assets:MyAsset"'''

file_path = "path/to/file.beancount"

connection = beanquery.connect('beancount:' +  file_path )
result = connection.execute(query) 
rrows = connection.fetchall()
rtypes, rrows = beanquery.numberify.numberify_results(
                rtypes, rrows
            )
print(rrows[0][0])

I got this idea by perusing Fava code
On Thursday, January 9, 2025 at 8:48:30 PM UTC-8 E wrote:

> Hello,
>
> I'm trying to run queries via automation, but I cannot tell how to use the 
> beanquery package
>
> this is what I have
>
> import beanquery
>
> query = '''SELECT sum(position)
> WHERE date <= 2024-04-01
>   AND account ~ "Assets:MyAsset"'''
>
> file_path = "path/to/file.beancount"
>
> connection = beanquery.connect('beancount:' +  file_path )
> result = connection.execute(query) 
> print( result .fetchall())
>
> the problem is that the result contains all the entries that match the 
> WHERE clause, but they are not aggregated as I specified in the query
>
> What am I missing?
>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beancount+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/beancount/c9f81cc0-064d-4e55-bb66-f8c94d0f05c2n%40googlegroups.com.

Reply via email to