I am building a SQL like query engine with a typescript query builder. It aims to provide multidimensional query capabilities (think about olap cube). The query engine is compatible with several databases (sucks, clickhouse, bigqueryx, snowflake...). Our users are developers building decision making applications. They are using for instance duckdb to develop locally their application and use a cloud provider in production. Here's the link https://github.com/squashql/squashql. Feel free to ask me any questions.
I found it too cumbersome, limited and not very intuitive to do it in SQL with the PIVOT operator so that I created my own API to be able to build a pivot table from a simple SQL statement https://github.com/squashql/squashql-showcase/blob/main/TUTO.... Roughly speaking, it consists in a single SQL statement and a list of headers for the rows and columns.
I am building a sort of SQL query engine compatible with several databases (bigquery, snowflake, duckdb, clickhouse, spark) in order to add more power to the SQL query language bringing multi dimensional capabilities to SQL and more. The project has been released few months ago and available on GitHub https://github.com/squashql/squashql
I am building squashql-js for a slightly different use case (database agnostic SQL-like Typescript query builder among others) but Kysely and pypika (for Python) have been a great source of inspiration.
Kysely was inspired by Knex, but took a more predictable route instead of providing generic APIs that produce different SQL for different dialects. We believe that dialect "lock-in" should never be a real concern because migrating from let's say, MySQL to PostgreSQL is extremely rare in the real world.
> MySQL to PostgreSQL is extremely rare in the real world.
That's true, I agree.
But we are mainly targeting software editors that build data analytics platform and let their customers choose where they want to store their data and run their analysis (on premise, in the cloud). Having a common API avoid adapting developed applications for each customer.
I wrote a small library https://github.com/paulbares/spring-testcontainer that provides integration between the Spring (Data JPA) testing framework and Testcontainer library to easily test my application with different containerized database instances.