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

Simplify install instructions #17

Merged
merged 2 commits into from
Jul 5, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 36 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,26 @@ Extension to [DuckDB](https://duckdb.org) that allows running [PRQL](https://prq

## Running the extension

For installation instructions, see further below. After installing the extension, you can directly query DuckDB using PRQL, the Piped Relational Query Language. Both PRQL and SQL commands are supported within the same shell.

As PRQL does not support DDL commands, we use SQL for defining our tables:
The PRQL extension is a [DuckDB community extension](https://community-extensions.duckdb.org/extensions/prql.html), and can simply be installed with

```sql
INSTALL httpfs;
LOAD httpfs;
CREATE TABLE invoices AS SELECT * FROM
read_csv_auto('https://raw.githubusercontent.com/PRQL/prql/0.8.0/prql-compiler/tests/integration/data/chinook/invoices.csv');
CREATE TABLE customers AS SELECT * FROM
read_csv_auto('https://raw.githubusercontent.com/PRQL/prql/0.8.0/prql-compiler/tests/integration/data/chinook/customers.csv');
install prql from community;
```

and subsequently loaded with

```
load prql;
```

and finally query using PRQL:
After loading the extension you can directly query DuckDB using PRQL, the [Piped Relational Query Language](https://prql-lang.org). Both PRQL and SQL commands are supported within the same shell.

Let's query using PRQL:

```sql
let invoices = s"select * from 'https://raw.githubusercontent.com/PRQL/prql/0.8.0/prql-compiler/tests/integration/data/chinook/invoices.csv'"
let customers = s"select * from 'https://raw.githubusercontent.com/PRQL/prql/0.8.0/prql-compiler/tests/integration/data/chinook/customers.csv'"

from invoices
filter invoice_date >= @1970-01-16
derive {
Expand All @@ -44,23 +48,23 @@ select {
derive db_version = s"version()";
```

which returns:
which returns

```
┌─────────────┬─────────────────────┬────────────┬────────────┐
│ customer_id │ name │ sum_income │ db_version │
│ int64 │ varchar │ double │ varchar │
├─────────────┼─────────────────────┼────────────┼────────────┤
│ 6 │ Holý, Helena │ 43.83 │ v0.8.1
7 │ Gruber, Astrid 36.83 │ v0.8.1
24Ralston, Frank37.83 │ v0.8.1
25Stevens, Victor 36.83 │ v0.8.1
26Cunningham, Richard 41.83 │ v0.8.1
28Barnett, Julia │ 37.83 │ v0.8.1
37Zimmermann, Fynn │ 37.83 │ v0.8.1
45Kovács, Ladislav39.83 │ v0.8.1
46 │ O'Reilly, Hugh39.83 │ v0.8.1
57Rojas, Luis 40.83 │ v0.8.1
│ 6 │ Holý, Helena │ 43.83 │ v1.0.0
26 │ Cunningham, Richard 41.83 │ v1.0.0
57Rojas, Luis 40.83 │ v1.0.0
45Kovács, Ladislav39.83 │ v1.0.0
46O'Reilly, Hugh 39.83 │ v1.0.0
24Ralston, Frank │ 37.83 │ v1.0.0
28Barnett, Julia │ 37.83 │ v1.0.0
37Zimmermann, Fynn37.83 │ v1.0.0
7 │ Gruber, Astrid36.83 │ v1.0.0
25Stevens, Victor36.83 │ v1.0.0
├─────────────┴─────────────────────┴────────────┴────────────┤
│ 10 rows 4 columns │
└─────────────────────────────────────────────────────────────┘
Expand Down Expand Up @@ -93,7 +97,13 @@ WITH invoices_remote_data AS (FROM read_csv_auto('https://raw.githubusercontent.

## Install

To install the PRQL extension, DuckDB needs to be launched with the `allow_unsigned_extensions` option set to true.
The PRQL extension can be installed as a DuckDB community extension via

```sql
install prql from community;
```

To load a development version of the PRQL extension, DuckDB needs to be launched with the `allow_unsigned_extensions` option set to true.
Depending on the DuckDB usage, this can be configured as follows:

CLI:
Expand All @@ -106,19 +116,15 @@ Python:
con = duckdb.connect(':memory:', config={'allow_unsigned_extensions' : 'true'})
```

A custom extension repository then needs to be defined as follows:
```sql
SET custom_extension_repository='http://welsch.lu/duckdb/prql/latest';
```
Note that the `/latest` path will provide the latest extension version available for the current version of DuckDB.
A given extension version can be selected by using that version as last path element instead.

After running these steps, the extension can then be installed and loaded using the regular INSTALL/LOAD commands in DuckDB:
```sql
FORCE INSTALL prql; # To override current installation with latest
FORCE INSTALL prql FROM 'http://welsch.lu/duckdb/prql/latest'; # To override current installation with latest
LOAD prql;
```

Note that the `/latest` path will provide the latest extension version available for the current version of DuckDB.
A given extension version can be selected by using that version as last path element instead.

## Build from source
To build the extension:
```sh
Expand Down
Loading