rustledger-query 0.5.2

Beancount query engine (BQL) with SQL-like syntax for ledger queries
Documentation

rustledger-query

Beancount Query Language (BQL) engine with SQL-like syntax.

Supported Syntax

SELECT account, SUM(position)
WHERE account ~ 'Expenses:'
GROUP BY account
ORDER BY SUM(position) DESC
LIMIT 10

Features

  • Full BQL support (SELECT, FROM, WHERE, GROUP BY, ORDER BY, LIMIT)
  • Regex pattern matching (~ operator)
  • Aggregate functions (SUM, COUNT, FIRST, LAST, MIN, MAX)
  • Date functions (YEAR, MONTH, DAY, QUARTER)
  • String functions (LENGTH, UPPER, LOWER)
  • Subqueries and PIVOT tables

Example

use rustledger_query::{parse_query, execute};

let query = parse_query("SELECT account, SUM(position) GROUP BY account")?;
let results = execute(&query, &entries)?;

for row in results {
    println!("{:?}", row);
}

License

GPL-3.0