Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ywelsch authored Jul 4, 2024
1 parent 60854f0 commit afdb751
Showing 1 changed file with 36 additions and 30 deletions.
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, 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. 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

0 comments on commit afdb751

Please sign in to comment.