Pivotal: a DSL for data analysis in Python #11995
Replies: 4 comments
-
|
This is cool! Can you compare/contrast with PRQL? |
Beta Was this translation helpful? Give feedback.
-
|
The other real value-adds that I think a next-gen relational-algebra DSL should have:
If you are interested, these properties are the motivation behind https://github.com/NickCrews/tybis, an experiment in trying to take all the good parts of ibis and make them even better, in typescript. |
Beta Was this translation helpful? Give feedback.
-
|
Hi Nick, thanks for the response. Yes, PRQL especially if used in DuckDB / Python is probably closest to Pivotal in spirit. I think the key difference is the audience / use case: I'm targeting analytical work with small /medium in-memory data in Python (this is what I do for work, I don't really use DBs / SQL much). I do have a simple comparison of Pivotal and PRQL syntax here and touched on it briefly in this post:
Syntax wise PRQL is still slightly more verbose than Pivotal (more brackets, aliases in merge etc.). But it gets back to the point above: PRQL is built on SQL and SQL is built for databases. There are lot of things in Python workflows that don’t fit naturally in SQL like, linking operations to metadata, saving results, plotting, functions / loops. Piped SQL / PRQL helps a bit, but why not have something built for in-memory analytical work from the start. |
Beta Was this translation helpful? Give feedback.
-
|
On your other points.
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I have been working on language for data analysis, has some similarities to IBIS (one syntax multiple backends). Except its a DSL that compiles to Python (pandas, polars, duckdb) intended to be used within Jupyter notebooks:
https://nealhughes.net/pivotal/
https://github.com/nealbob/pivotal-py
Would really welcome any feedback on this. The first link above explains my motivation. (Sorry if this is unwelcome)
Beta Was this translation helpful? Give feedback.
All reactions