Jupyter kernel for ggsql - SQL extension for declarative data visualization
Project description
ggsql Jupyter Kernel
A Jupyter kernel for executing ggsql queries with rich inline Vega-Lite visualizations.
Overview
The ggsql Jupyter kernel enables you to run ggsql queries directly in Jupyter notebooks, with automatic rendering of visualizations using Vega-Lite. It maintains a persistent DuckDB session across cells, allowing you to build up datasets and create visualizations interactively.
Features
- Execute ggsql queries in Jupyter notebooks
- Rich visualizations with Vega-Lite rendered inline
- Persistent DuckDB session across cells
- Pure SQL support with HTML table output
- Grammar of Graphics syntax for declarative visualization
Installation
Prerequisites
- Jupyter Lab or Notebook installed
Option 1: Install from PyPI (Recommended)
The easiest way to install the ggsql kernel is from PyPI. This provides pre-built binaries for Linux, macOS, and Windows.
Using pip:
pip install ggsql-jupyter
ggsql-jupyter --install
Using uv:
uv tool install ggsql-jupyter
ggsql-jupyter --install
The --install flag registers the kernel with Jupyter. It automatically detects and respects your current environment (virtualenv, conda, uv, etc.).
Option 2: Install from crates.io
Requires a Rust toolchain:
cargo install ggsql-jupyter
ggsql-jupyter --install
Option 3: Download Pre-built Binary
Pre-built binaries are available from GitHub Releases:
| Platform | Binary |
|---|---|
| Linux (x86_64) | ggsql-jupyter-linux-x64 |
| Linux (ARM64) | ggsql-jupyter-linux-arm64 |
| macOS (Intel) | ggsql-jupyter-macos-x64 |
| macOS (Apple Silicon) | ggsql-jupyter-macos-arm64 |
| Windows (x64) | ggsql-jupyter-windows-x64.exe |
After downloading, make it executable and install:
chmod +x ggsql-jupyter-*
./ggsql-jupyter-linux-x64 --install
On Windows (PowerShell):
.\ggsql-jupyter-windows-x64.exe --install
Option 4: Build from Source
Requires a Rust toolchain. From the workspace root:
cargo build --release --package ggsql-jupyter
./target/release/ggsql-jupyter --install
Installation Flags
--install: Install the kernel (default: user install)--install --user: Explicitly install for current user--install --sys-prefix: Install into sys.prefix (for conda envs)
Verify Installation
jupyter kernelspec list
You should see ggsql in the list of available kernels.
Usage
Start Jupyter
jupyter lab
# or
jupyter notebook
Create a ggsql Notebook
- In Jupyter, click "New" and select "ggsql" from the dropdown
- Start writing ggsql queries!
Example Queries
Simple Point Plot
SELECT 1 as x, 2 as y, 'A' as category
UNION ALL
SELECT 2, 4, 'A'
UNION ALL
SELECT 3, 3, 'B'
VISUALISE x, y, category AS color
DRAW point
Time Series
SELECT
'2024-01-01'::DATE + INTERVAL (n) DAY as date,
n * 10 as revenue
FROM generate_series(0, 30) as t(n)
VISUALISE date AS x, revenue AS y
DRAW line
SCALE x SETTING type => 'date'
LABEL title => 'Revenue Growth', x => 'Date', y => 'Revenue ($)'
Multi-Layer Plot with Global Mapping
SELECT x, x*x as y, x*x*x as z
FROM generate_series(1, 10) as t(x)
VISUALISE x AS x
DRAW line MAPPING y AS y
DRAW line MAPPING z AS y
LABEL title => 'Polynomial Functions'
Pure SQL (Data Tables)
SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t(id, name)
This will display as an HTML table without visualization.
Building Up Data Across Cells
Cell 1:
CREATE TABLE products AS
SELECT * FROM (VALUES
(1, 'Widget', 10.99),
(2, 'Gadget', 24.99),
(3, 'Doohickey', 5.99)
) AS t(id, name, price)
Cell 2:
SELECT * FROM products
VISUALISE name AS x, price AS y
DRAW bar
LABEL title => 'Product Prices', y => 'Price ($)'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ggsql_jupyter-0.1.7.tar.gz.
File metadata
- Download URL: ggsql_jupyter-0.1.7.tar.gz
- Upload date:
- Size: 807.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ade32bb11ff9f95680ef1eed2f1300d4e7bea6835835768d7876dfc979c34b22
|
|
| MD5 |
a692c109ca150743af626ad69648e726
|
|
| BLAKE2b-256 |
1d5f46649f099b3aa0cc4ac673cdb7b6cfd5fc500305721f1b3184372717f2cd
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7.tar.gz:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7.tar.gz -
Subject digest:
ade32bb11ff9f95680ef1eed2f1300d4e7bea6835835768d7876dfc979c34b22 - Sigstore transparency entry: 1097029161
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ggsql_jupyter-0.1.7-py3-none-win_amd64.whl.
File metadata
- Download URL: ggsql_jupyter-0.1.7-py3-none-win_amd64.whl
- Upload date:
- Size: 35.1 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de3808290e89c891d3ca6d7b2a71a12db16498d563cb53e3b6238a6519049f14
|
|
| MD5 |
08a7a2a631f77e9ae29da231c17e34c2
|
|
| BLAKE2b-256 |
cb00be5798f7379bd4840eebec970fb0225eb592a9336cec1b8b275bfa0e2dd8
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7-py3-none-win_amd64.whl:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7-py3-none-win_amd64.whl -
Subject digest:
de3808290e89c891d3ca6d7b2a71a12db16498d563cb53e3b6238a6519049f14 - Sigstore transparency entry: 1097029222
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 41.6 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb154c57b5c9494a0b39edeeacebfc0eea91ff037c5a2bbdcb54cd719fb90450
|
|
| MD5 |
7548cc969878e0d68d554f7f3212f0e7
|
|
| BLAKE2b-256 |
f747f565de4e1589e9be79a0ba17c8a77446976c072504b6ee067a433fa1c14f
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_x86_64.whl:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_x86_64.whl -
Subject digest:
cb154c57b5c9494a0b39edeeacebfc0eea91ff037c5a2bbdcb54cd719fb90450 - Sigstore transparency entry: 1097029190
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 40.1 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88f0424f8f465968c217d0da73ecc679a495a669ad7338cd9996ef12abf4022a
|
|
| MD5 |
47437e430c57bb801b3c07224bc237c0
|
|
| BLAKE2b-256 |
e873caaf107148dd0a89c8bc2bc5de29b83a1ec4031f5ea94c2c6a305ffa3ef1
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_aarch64.whl:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7-py3-none-manylinux_2_28_aarch64.whl -
Subject digest:
88f0424f8f465968c217d0da73ecc679a495a669ad7338cd9996ef12abf4022a - Sigstore transparency entry: 1097029228
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ggsql_jupyter-0.1.7-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: ggsql_jupyter-0.1.7-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 36.4 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ae42fd68ed9df2b8c6bd32f532cf233da1a1a7c721de6ddb6b2a67fda526539
|
|
| MD5 |
bbea11f81883dadd9ca6725d08881147
|
|
| BLAKE2b-256 |
9fbd719007cc563377ec8b457be64bdaaccac78b7205a8cc3be0d7b52cda6c24
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7-py3-none-macosx_11_0_arm64.whl:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7-py3-none-macosx_11_0_arm64.whl -
Subject digest:
0ae42fd68ed9df2b8c6bd32f532cf233da1a1a7c721de6ddb6b2a67fda526539 - Sigstore transparency entry: 1097029203
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ggsql_jupyter-0.1.7-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: ggsql_jupyter-0.1.7-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 39.0 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60e4d4300b58f15add42042519b44ce8313b4a1071ea2d7986a1e0bf0f2cc7e8
|
|
| MD5 |
18b8e87dcd462f9803f5763b3283f79d
|
|
| BLAKE2b-256 |
d238d75e2b53c568407dec733554662dc131b067c49baf2ba95f1d0991ff5970
|
Provenance
The following attestation bundles were made for ggsql_jupyter-0.1.7-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release-jupyter.yml on posit-dev/ggsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ggsql_jupyter-0.1.7-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
60e4d4300b58f15add42042519b44ce8313b4a1071ea2d7986a1e0bf0f2cc7e8 - Sigstore transparency entry: 1097029174
- Sigstore integration time:
-
Permalink:
posit-dev/ggsql@cfc9c33f8e723a094c91b8422f533143593df17f -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/posit-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jupyter.yml@cfc9c33f8e723a094c91b8422f533143593df17f -
Trigger Event:
push
-
Statement type: