Preql (pronounced: Prequel) is an interpreted relational query language.
It is designed for use by data engineers, analysts and data scientists.
-
Compiles to SQL at runtime. It has the performance and abilities of SQL, and much more.
-
Support for Postgres, MySQL and Sqlite. (more planned!)
-
Escape hatch to SQL, for all those database-specific features we didn't think to include
-
-
Programmer-friendly syntax and semantics, with gradual type-checking, inspired by Typescript and Python
-
Interface through Python, HTTP or a terminal environment with autocompletion
Note: Preql is still work in progress, and isn't ready for production use, or any serious use yet
Documentation
Get started
Simply install via pip:
pip install -U prql
Then just run the interpreter:
preql
Requires Python 3.8+
Quick Example
// Sum up all the squares of an aggregated list of numbers
// Grouped by whether they are odd or even
func sqrsum(x) = sum(x * x)
func is_even(x) = x % 2 == 0
print [1..100]{
is_even(item) => sqrsum(item)
}
// Result is:
┏━━━━━━━━━┳━━━━━━━━┓
┃ is_even ┃ sqrsum ┃
┡━━━━━━━━━╇━━━━━━━━┩
│ 0 │ 166650 │
│ 1 │ 161700 │
└─────────┴────────┘
In the background, this was run by executing the following SQL code (reformatted):
WITH range1 AS (SELECT 1 AS item UNION ALL SELECT item+1 FROM range1 WHERE item+1<100)
, subq_3(is_even, sqrsum) AS (SELECT ((item % 2) = 0) AS is_even, SUM(item * item) AS sqrsum FROM range1 GROUP BY 1)
SELECT * FROM subq_3
License
Preql uses an “Interface-Protection Clause” on top of the MIT license.
See: LICENSE
In simple words, it can be used for any commercial or non-commercial purpose, as long as your product doesn't base its value on exposing the Preql language itself to your users.
If you want to add the Preql language interface as a user-facing part of your commercial product, contact us for a commercial license.
Release files for prql 0.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prql-0.1.12.tar.gz | 69.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prql-0.1.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 147.4 kB
Release files / prql-0.1.12.tar.gz
| Download URL | prql-0.1.12.tar.gz |
|---|---|
| Size | 69.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d6ef7827c2b1654cf98091ba0a79c52c728e48574373762d62a0d3bd330af99
|
|
BLAKE2b-256 checksum How to use checksums |
296b9b1f0fb4b7cd28d0f148611e9a5aca9da5df72d91c74ee92c9f9fe9c75c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.2 CPython/3.8.2 Windows/10
|
Release files / prql-0.1.12-py3-none-any.whl
| Download URL | prql-0.1.12-py3-none-any.whl |
|---|---|
| Size | 78.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
535b733f934d0f9bbcadc5332caf37716799063c11c3d47b98d606bf1ad3425f
|
|
BLAKE2b-256 checksum How to use checksums |
e0a3bf707fa134fe78cf02f2bb483e9240a926def4cc7a17b4fe0f914fa57310
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.2 CPython/3.8.2 Windows/10
|