Write queries in the order they run.
UNSeQueL is a small query language for reading transformations top to bottom: start with data, filter, group, project, then sort and take. Run .unsequel files directly against local CSV, JSON, or Parquet data.
FROM-first SQL, made explicit
Instead of naming output columns before explaining the input and row/group operations, put each supported relation step where it happens. Familiar relational operations, a visible pipeline.
SQL
SELECT country, SUM(quantity * unit_price) AS revenue FROM orders WHERE quantity > 0 GROUP BY country HAVING COUNT(*) > 1 ORDER BY revenue DESC LIMIT 10;
UNSeQueL ordered surface
FROM orders WHERE quantity > 0 GROUP BY country HAVING COUNT(*) > 1 SELECT country, SUM(quantity * unit_price) AS revenue ORDER BY revenue DESC LIMIT 10
This is not a replacement for SQL. You will still need SQL for real databases and warehouses; UNSeQueL is intended to make the supported stages easier to inspect. That learning benefit has not yet been measured.
Run it like a query, not a program
1 · Declare sources
Put # source orders: path/to/orders.csv at the top of a .unsequel file. Paths are relative to the file.
2 · Run a query or selection
Use unsequel run query.unsequel or run selected lines with --lines A:B. File sources remain available to the selection.
3 · Use your editor
The VS Code extension highlights .unsequel and adds Run Selection, Run File, and Open REPL commands.
Start here
git clone https://github.com/absterjr/UNSeQueL.git cd UNSeQueL/compiler npm install -g . unsequel run examples/real/r01_top_products.unsequel
New to the project? The getting started guide covers installation, the REPL, formatting, and selection runs. The worked examples show five analyst queries with their results.
Honest about the alternatives
UNSeQueL is not the first ordered query language. DuckDB already has FROM-first SQL; PRQL compiles pipelines to multiple SQL dialects; Malloy adds semantic modeling; Kusto is built for analytics/log queries; and BigQuery GoogleSQL, Spark SQL, and Databricks SQL now have composable pipe syntax.
The current UNSeQueL distinction is a compact stage model, local-file execution, stage preview, selection runs, and an editor workflow. UNSeQueL currently targets DuckDB and does not implement window frames or a second SQL target. See comparison and scope.