Dear all,
There seems to have been quite a lot of recent development and nice features, introduced to beanquery. In fact in beancount v3 beancount itself is just a library, used by beanquery and other tools, and most of the interactions of a user with its ledger is probably done via beanquery.
So, I am just wondering whether somebody can outline the roadmap for beanquery development?
My understanding of the current state
I may be mistaken, but it is my understanding, that at the moment beanquery seems to be supporting 2 modes:
The original mode.
This mode has a formal original documentation.
In this mode:
all queries are running only against the postings table
FROM part is responsible for entry-level filter expressions.
In this mode also accounting- specific additions to the SQL-like language like JOURNAL, OPEN ON, CLOSE ON, BALANCES are available
The new mode:
More (much more) tables available for query
beanquery> .tables
accounts
balances
commodities
documents
entries
events
notes
postings
prices
transactions
beanquery>
The FROM part has a traditional role to select a table
To activate this “new mode” one has to include the table name preceded with the #
E.g.
beanquery> select account, open.date from #accounts
The JOIN feature of the SQL is not supported (yet) but for instance postings table is already joint with the transactions table (where it is called entry)
beanquery> .describe postings
table postings:
type (str)
id (str)
date (date)
year (int)
month (int)
day (int)
filename (str)
lineno (int)
location (str)
flag (str)
payee (str)
narration (str)
description (str)
tags (set)
links (set)
posting_flag (str)
account (str)
other_accounts (set)
number (decimal)
currency (str)
cost_number (decimal)
cost_currency (str)
cost_date (date)
cost_label (str)
position (position)
price (amount)
weight (amount)
balance (inventory)
meta (dict)
entry (transaction) <===== Joint transaction table
accounts (set[str])
beanquery>
In this mode all the additional perks like JOURNAL, OPEN ON, CLOSE ON, BALANCES do not seem to be available.
So, as far as I can see, we have this duality (old vs new mode). This creates a situation, that “there are often more ways to kill the cat” (I am not complaining, just concluding).
E.g. the following queries will all produce the same result
beanquery> select narration where date = 2020-01-03
beanquery> select narration from #postings where date = 2020-01-03
beanquery> select entry.narration from #postings where date = 2020-01-03
Questions:
Q1: Is my understanding of the current state of the beanquery correct?
Q2: what is the roadmap for beanquery?
Will 2 modes supported going further?
Will the perks like JOURNAL, OPEN ON, CLOSE ON, BALANCES be brought in the new mode as well?
What new features are planned to be added to beanquery?
What features are planned to be dropped from beanquery?
> In this mode all the additional perks like JOURNAL, OPEN ON, CLOSE ON,
> BALANCES do not seem to be available.
Unless there is a bug somewhere, OPEN ON and CLOSE ON are supported also
when using the new syntax (although they do no always make sense).
JOURNAL and BALANCES can be thought as macros that expand to a regular
SELECT query. What do you mean when you write that the new mode does not
support them?
or at least a proper balance() function.
> In this mode all the additional perks like JOURNAL, OPEN ON, CLOSE ON,
> BALANCES do not seem to be available.
Unless there is a bug somewhere, OPEN ON and CLOSE ON are supported also
when using the new syntax (although they do no always make sense).
JOURNAL and BALANCES can be thought as macros that expand to a regular
SELECT query. What do you mean when you write that the new mode does not
support them?