Skip to content

derekwisong/datui

Repository files navigation

Datui

License Version Rust Downloads PyPI Downloads GitHub Stars CI

Datui is a high-performance terminal UI for exploring and analyzing datasets. Powered by the Polars engine and written in Rust, it brings SQL-like power and Excel-like visibility to your CLI.

Datui is in rapid development; features and interfaces are evolving.

📖 Documentation: Full User Guide.

Demo

Overview Demo

Why Datui?

  • 🚀 Fast: Powered by Polars streaming expressions for state-of-the-art performance on massive datsets
  • 📁 Universal: Supports Parquet, CSV, JSON, Avro, Arrow, ORC, and Excel
  • 🧰 Flexible: View data stored locally, on S3, or over HTTP/HTTPS
  • 🔍 Queryable: Fuzzy search or query with SQL or an SQL-like DSL
  • 📊 Charts: Render terminal-based charts and export them as images
  • 🔬 Analysis: Use analytical tools to understand correlations, distributions, and more
  • ⚒️ Transformations: Sort, filter, pivot, melt, and more
  • ⌨️ Keyboard-Driven: Arrow keys and Vim-style navigation (h/j/k/l)

Installation

Datui can be installed easily on Linux, macOS, and Windows. See the summary of each option below. Visit the Install Guide for additional details.

✨ Quick Install for Linux and macOS

curl -fsSL https://raw.githubusercontent.com/derekwisong/datui/main/scripts/install/install.sh | sh

Don't like piping to shell? See the alternative methods below.

Pre-built Releases

Get the pre-built binary for your platform from the Latest Release.

From Package Managers

See Package Managers

  • macOS (Homebrew):
    brew tap derekwisong/datui
    brew install datui
  • Arch Linux (AUR):
    • paru -S datui-bin
    • yay -S datui-bin
  • Pip: pip install datui (See Python Module)
  • Windows (WinGet): winget install derekwisong.datui (Coming Soon)

From Source

See Compiling

git clone https://github.com/derekwisong/datui.git
cd datui
cargo build --release

The binary will be available at target/release/datui.

Quick Start

See the Quick Start Guide

  • 💻 Load a file, or hive-partitioned dataset, from the shell:
    datui /path/to/data.parquet
    datui --hive /path/to/directory
    datui --hive "/path/to/directory/**/*.parquet"

    See Loading Data

  • ☁️ Load data from S3 and HTTP:
    datui s3://some-bucket/file.parquet
    datui gs://some-bucket/file.parquet
    datui https://www.domain.com/file.csv

    See Loading Remote Data

  • 🐍 View data from Python:
    import polars as pl
    import datui
    
    lf = pl.scan_parquet("/path/to/data.parquet")
    datui.view(lf)

    See Python Module

  • Use arrow keys or Vim-style keybinds (h/j/k/l) to navigate
  • Press q to exit

💡 Use ? or F1 to show help

Configuration

See the Configuration Guide

Generate a default TOML config file:

datui --generate-config

For Developers

Setup

See the Setup Script guide to quickly get configured to run the tests, build docs, demos, and packages.

Contributing

Contributions are welcome! Please see Contributing for more.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Note: If you encounter any issues or have feature requests, please open an issue on GitHub.