Skip to main content

Plot the output of duckdb query

Project description

Duck Plot CLI

PyPI Changelog Tests License

A command-line tool for visualizing SQL query results using DuckDB and Altair charts.

Installation

Install this tool using pip:

pip install duck-plot

or run the cli with uvx in a temporary virtual environment:

uvx duck-plot ...

Features

  • Execute SQL queries against DuckDB databases or in-memory data
  • Create line or bar charts from query results
  • Display query results in a rich formatted table
  • Support for piped input and command-line arguments
  • Interactive visualizations in the browser

Usage

Basic Query Visualization

Create a line chart from query results:

duck-plot "SELECT date, sales FROM 'sales.csv'" -x date -y sales

Create a bar chart:

duck-plot "SELECT category, count(*) as total FROM 'sales.csv' GROUP BY 1" -x category -y total --type bar

Using a DuckDB Database

Query an existing DuckDB database:

duck-plot "SELECT * FROM monthly_sales" -x month -y revenue --db sales.duckdb

Piping Queries

Use heredoc for complex queries:

cat << EOF | duck-plot -x month -y total_sales --type bar
SELECT 
    date_trunc('month', date) as month,
    sum(sales) as total_sales 
FROM sales 
GROUP BY 1 
ORDER BY 1
EOF

Query-Only Mode

You have the option to only display results without creating a chart:

duck-plot "SELECT * FROM sales LIMIT 5" --query-only

or use a pipe:

echo "SELECT * FROM 'sales.parquet'" | duck-plot --query-only --db sales.duckdb

Options

Arguments:
  query                  SQL query to execute [optional if piping input]

Options:
  -x, --x TEXT          Column name for X-axis
  -y, --y TEXT          Column name for Y-axis
  -t, --type TEXT       Type of chart (line or bar) [default: line]
  -d, --db TEXT         Path to DuckDB database file [optional]
  -q, --query-only      Output query results to stdout and skip chart creation
  --help                Show this message and exit

Examples

Analyzing Time Series Data

duck-plot "
SELECT 
    date,
    moving_average(price, 7) as price_ma
FROM 'stock_prices.csv'
WHERE symbol = 'AAPL'
ORDER BY date
" -x date -y price_ma

Comparing Categories

duck-plot "
SELECT 
    category,
    sum(revenue) as total_revenue
FROM 'sales.csv'
GROUP BY category
ORDER BY total_revenue DESC
LIMIT 10
" -x category -y total_revenue --type bar

Interactive Data Exploration

# First view the available columns
duck-plot "FROM dataset LIMIT 1" --query-only

# Then create visualizations based on the columns
duck-plot "FROM dataset" -x timestamp -y temperature

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd duck-plot
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

python -m pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duck_plot-0.11.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

duck_plot-0.11-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file duck_plot-0.11.tar.gz.

File metadata

  • Download URL: duck_plot-0.11.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for duck_plot-0.11.tar.gz
Algorithm Hash digest
SHA256 684326b852f1c2ed6bfa04e5084ef4f905c92f75a14329bac7073a5b3c04f1a4
MD5 ccbe345493c48e158dab0aec870ed78f
BLAKE2b-256 99d176c27925a6a9b26bd1cd8318b724d7ddc052cbb9e094c31bf458ef78dc34

See more details on using hashes here.

Provenance

The following attestation bundles were made for duck_plot-0.11.tar.gz:

Publisher: publish.yml on LVG77/duck-plot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file duck_plot-0.11-py3-none-any.whl.

File metadata

  • Download URL: duck_plot-0.11-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for duck_plot-0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 0aad2657931dbe9ea2e10c1da4ab6964e05c3637d868810c20e9761e2be0fb6c
MD5 129118f7e820e9bd86246d78b9c7b546
BLAKE2b-256 59e285a66084b089bcd0edb7bce42b4ff909a5ff88920837fe78fd1aa3405b93

See more details on using hashes here.

Provenance

The following attestation bundles were made for duck_plot-0.11-py3-none-any.whl:

Publisher: publish.yml on LVG77/duck-plot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page