OK, that's where I ended up anyhow. Thank you very much for the pointers! Ethan
On Sat, Nov 3, 2018 at 5:43 PM Martin Blais <bl...@furius.ca> wrote: > The problem with your query is a combination of things: > - You're making an aggregate query, as per the presence of sum() > - You're not using an explicit GROUP BY clause, so it selects all the > non-aggregate columns for you (year, month, balance). > balance is of type Inventory. > All non-aggregate types must be hashable (though I could relax that to > make them required comparable, with a little cost). > > If you use last(balance) instead of balance, that would just work (group > by year, month, only, which is likely what you wanted anyway). > > Granted: It should not fail with an exception like this (but this needs a > full rewrite, see other emails for my thoughts on this). > > > > > > On Thu, Nov 1, 2018 at 3:19 PM Ethan <ethan.glasser.c...@gmail.com> wrote: > >> That's fantastic, thank you very much. I was able to get what (grouped by >> month) I wanted using `SELECT year(date), month(date), >> last(cost(balance))`. I wasn't able to use `SELECT year, month, >> sum(cost(position)), balance WHERE date > 2018-10-20`. When I try I get >> this exception: >> >> Traceback (most recent call last): >> File >> "/nix/store/nrl0l79a48924xb0897ap572xf29ciir-python3-3.6.6/lib/python3.6/cmd.py", >> line 214, in onecmd >> func = getattr(self, 'do_' + cmd) >> AttributeError: 'QueryShell' object has no attribute 'do_SELECT' >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> File >> "/nix/store/fp1w3x8kapd6bj0d2ay2q5ghpwjhzl1h-python3.6-beancount-2.1.2/lib/python3.6/site-packages/beancount/query/shell.py", >> line 270, in run_parser >> self.dispatch(statement) >> File >> "/nix/store/fp1w3x8kapd6bj0d2ay2q5ghpwjhzl1h-python3.6-beancount-2.1.2/lib/python3.6/site-packages/beancount/query/shell.py", >> line 250, in dispatch >> return method(statement) >> File >> "/nix/store/hi4vx0wnnllvlvfbd3hdblpxhdmlcjjr-fava-1.7/lib/python3.6/site-packages/fava/core/query_shell.py", >> line 89, in on_Select >> self.options_map) >> File >> "/nix/store/fp1w3x8kapd6bj0d2ay2q5ghpwjhzl1h-python3.6-beancount-2.1.2/lib/python3.6/site-packages/beancount/query/query_execute.py", >> line 327, in execute_query >> store = agg_store[row_key] >> TypeError: unhashable type: 'Inventory' >> >> I'm not sure if that's expected or not -- should I file a bug? >> >> Ethan >> >> On Thu, Nov 1, 2018 at 3:01 PM Stefano Zacchiroli <z...@upsilon.cc> >> wrote: >> >>> On Thu, Nov 01, 2018 at 11:49:36AM -0700, ethan.glasser.c...@gmail.com >>> wrote: >>> > Is there a bean-query mechanism for doing accumulation or "running >>> count" >>> > operations? I could "roll my own" using a subquery but I see from the >>> > documentation that sub-selects aren't supported. >>> >>> You have the balance "column", as in: >>> >>> SELECT balance WHERE account ~ '^(Liabilities|Assets)' ORDER BY date; >>> >>> See: "The “balance” Column" in the BQL documentation here: >>> >>> >>> https://docs.google.com/document/d/1s0GOZMcrKKCLlP29MD7kHO4L88evrwWdIO0p4EwRBE0/ >>> >>> It's not a fully generic running count, but AFAICT is what is used by >>> the BALANCES shorthand query which you cited as initial example. >>> >>> Cheers >>> -- >>> Stefano Zacchiroli . z...@upsilon.cc . upsilon.cc/zack . . o . . . o . o >>> Computer Science Professor . CTO Software Heritage . . . . . o . . . o o >>> Former Debian Project Leader & OSI Board Director . . . o o o . . . o . >>> « the first rule of tautology club is the first rule of tautology club » >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "Beancount" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/beancount/dtOply6B8xQ/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> beancount+unsubscr...@googlegroups.com. >>> To post to this group, send email to beancount@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/beancount/20181101190147.75d3a224xwe7gi2d%40upsilon.cc >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> 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 post to this group, send email to beancount@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beancount/CAOJ%2BOb07re2AcWdYxQqUOTBkiJKm8kX1CpfprifFyF3Fq%2BPUaA%40mail.gmail.com >> <https://groups.google.com/d/msgid/beancount/CAOJ%2BOb07re2AcWdYxQqUOTBkiJKm8kX1CpfprifFyF3Fq%2BPUaA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "Beancount" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/beancount/dtOply6B8xQ/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/CAK21%2BhNwjYNXXszXT7%3DkzpQktFZSbTGnTcpTraDVG_H%3D0WUFXg%40mail.gmail.com > <https://groups.google.com/d/msgid/beancount/CAK21%2BhNwjYNXXszXT7%3DkzpQktFZSbTGnTcpTraDVG_H%3D0WUFXg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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 post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAOJ%2BOb1dteULkepg3ywOk%2BQ0ZSoDGk69ciJJz%2BYJQYHz-rzRrQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.