Skip to content
derekwisongPublic

About

Data Exploration in the Terminal

Topics

Resources

Contributing

Security policy

Stars

137 stars

Watchers

2 watching

Forks

Repository files navigation

datui

Explore tabular data in your terminal.

Parquet, CSV, JSON, Arrow, Excel, SQLite, logs, audio, model files and more, including binary formats you describe in a format spec.

Open it from local disk, S3, GCS, Azure, HTTP(S), a pipe, or a Polars frame in Python.

Release CI License: MIT

Website · Documentation · Quick start · Formats

datui opening NYC flights (2013) from Example datasets, sorting by departure delay, inspecting the worst row, and charting the mean delay by hour, one line per airport

Try it

datui     # home screen: your files, and Example datasets to open with no login
datui s3://noaa-ghcn-pds/parquet/by_year/YEAR=2024/   # 38 million rows of NOAA weather, no login

Press ? for the keys on any screen. Esc backs out; Ctrl+Q quits.

Install

curl -fsSL https://raw.githubusercontent.com/derekwisong/datui/main/scripts/install/install.sh | sh
Platform Command
Windows, WinGet winget install derekwisong.datui
Debian, Ubuntu Apt repository
Fedora, RHEL Dnf repository
Arch Linux, AUR yay -S datui-bin # or: paru -S datui-bin
macOS, Linux, Homebrew brew tap derekwisong/datui && brew trust derekwisong/datui && brew install datui
Python, PyPI pip install datui
Rust, crates.io cargo install datui --locked
Binaries Linux, macOS and Windows binaries, .deb, .rpm and Arch tarballs on the latest release

More ways to install, and how to uninstall: the installation guide.

How it stays fast

  • Rust on Polars. Every table is a LazyFrame until it is drawn.
  • Only the rows on screen and a lookahead buffer are collected. Sort, filter and query build on the lazy plan.
  • A Parquet file in S3, GCS or Azure is read in place. datui reads the footers for the schema and row count, then only the row groups the screen needs.
  • Rows are counted in the background, so you can use the table before the count is done.

First rows in milliseconds on local files, under a second from S3. Performance has the numbers.

What it does

Task Key or command Guide
Find text, a regex or letters in order / Find
Run SQL or q : Queries
Sort by the cursor's column; keep or drop its value [ ], + - Sort and filter
Value counts of a column F Value counts
Chart; export it to PNG, SVG or PDF c, then e Charts
Pivot or melt p Reshaping
Change a column's type i, Enter on the Schema tab Column types
Copy (OSC 52 over SSH) or export y, e Copy · Export
Save the steps as a view for the next file v Views
Read your own binary or delimited format datui --format SPEC.toml FILE Format specs
Follow a growing file; view a pipe as it arrives datui -f FILE, COMMAND | datui Pipes
Add a dataset to your catalog; read its documentation Ctrl+D, Ctrl+E on the home screen Catalogs
Pick a theme datui theme list Configuration
Click, scroll, drag a column, right-click a cell Mouse Mouse

Where the data lives

Source Open it with
A file, a directory of files, a glob datui sales.parquet, datui events/, datui --hive 'logs/*/*.parquet'
S3, GCS, Azure datui s3://BUCKET/KEY, gs://…, abfss://…, or browse it from the home screen
HTTP(S) datui https://…
Hive partitions A key=value tree opens as one table, partition columns first
Standard input COMMAND | datui
Python datui.view(frame) on a Polars DataFrame or LazyFrame

The home screen lists your recent files, your directories, your catalogs, the cloud accounts it finds logins for, and Example datasets: public data that opens with no login. Home screen · Cloud storage

Python

pip install datui installs the command and the module:

import datui
import polars as pl

url = "https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv"
penguins = pl.scan_csv(url)
datui.view(penguins)

# Return the current query, filters and sort as a LazyFrame.
result = datui.view(penguins, capture=True)
if result is not None:
    print(result.collect())

Python guide · Python API

What it is not

  • An editor: you cannot change cells, and datui does not write to the files it opens unless you export over one. To keep a result, export or copy it.
  • A service: no telemetry, no update check. datui connects only to the data and the cloud accounts you open or browse.

Contribute

Open an issue for bugs and feature requests. The developer guide covers building, testing and contributing. Report security issues using SECURITY.md.

Built with Polars and Ratatui. Released under the MIT license.

About

Data Exploration in the Terminal

Topics

Resources

Contributing

Security policy

Stars

137 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages