Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transpiling from SQL to PRQL #130

Open
max-sixty opened this issue Feb 25, 2022 · 4 comments
Open

Transpiling from SQL to PRQL #130

max-sixty opened this issue Feb 25, 2022 · 4 comments

Comments

@max-sixty
Copy link
Member

max-sixty commented Feb 25, 2022

This is a longer-term idea — but now we're using sqlparser to write SQL, we could also use it to read SQL and produce PRQL.

We'd need to write:

  1. a fairly simple compiler from sqlparser AST to PRQL AST
  2. Display implementations which convert PRQL AST to PRQL code

This would be useful for people transitioning from SQL. At least initially, the main users are likely to be engineers who are frustrated by SQL because they've written a lot of it.

We wouldn't need to support all of SQL for it to be useful — there's a fairly small subset that's used a lot — and possibly a larger subset which we could implement with s-strings.

We also wouldn't need to automatically do things like variable "creation" (e.g. replacing salary + payroll_tax + benefits_cost with gross_cost), which would be much more difficult (but great if we could!).

@aljazerzen
Copy link
Member

Update: this is currently not possible yet, but we are not far off.

The Display trait for prql's AST Node is done, we just need to parse SQL and convert it to AST, which should't be a major problem.

@ryanrussell
Copy link
Contributor

A SQL -> PRQL transpiler would REALLY ease adoption for PRQL.

Even if it had some disclaimers, it lowers a lot of barriers if a new user is trying to learn/adopt PRQL and could copy/paste a bunch of SQL queries.

@florent-martineau
Copy link

Using Apache Calcite for parsing queries and turning them into an AST could be an idea.

Calcite is written in Java, though, and not in Rust.

@max-sixty
Copy link
Member Author

We'd likely use sqlparser-rs, which we currently use to represent SQL AST, and it builds the SQL string.

@snth snth modified the milestones: 0.3, 0.5 Dec 21, 2022
This was referenced Dec 30, 2022
@max-sixty max-sixty removed this from the 0.9 milestone Jun 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants