alimentar view

Interactive TUI viewer for exploring datasets in the terminal.

Synopsis

alimentar view [OPTIONS] <PATH>

Description

The view command launches an interactive terminal-based viewer for exploring datasets. It supports Parquet, Arrow IPC, CSV, and JSON formats.

The viewer automatically selects between two modes based on dataset size:

  • InMemory Mode: For datasets < 100,000 rows. All data loaded upfront for fast random access.
  • Streaming Mode: For datasets >= 100,000 rows. Lazy batch loading for memory efficiency.

Arguments

ArgumentDescription
<PATH>Path to dataset file (Parquet, Arrow IPC, CSV, or JSON)

Options

OptionDescription
--search <QUERY>Initial search query - jumps to first matching row
-h, --helpPrint help information

Keyboard Controls

KeyAction
/ kScroll up one row
/ jScroll down one row
PgUpScroll up one page
PgDn / SpaceScroll down one page
Home / gJump to first row
End / GJump to last row
KeyAction
/Open search prompt
EnterExecute search (in search mode)
EscCancel search (in search mode)

Exit

KeyAction
qQuit viewer
EscQuit viewer (when not in search mode)
Ctrl+CForce quit

Examples

Basic Usage

# View a Parquet file
alimentar view data.parquet

# View a CSV file
alimentar view data.csv

# View an Arrow IPC file
alimentar view data.arrow

# View a JSON file
alimentar view data.json

Search on Open

# Open viewer and jump to first row containing "error"
alimentar view logs.parquet --search "error"

# Search for a specific ID
alimentar view users.csv --search "user_12345"

Workflow Integration

# Quick inspection workflow
alimentar info data.parquet      # Check schema and stats
alimentar head data.parquet -n 5 # Preview first rows
alimentar view data.parquet      # Interactive exploration

# Quality check then explore
alimentar quality check data.csv && alimentar view data.csv

Display

The viewer displays:

  1. Title Bar: Filename, row count, and adapter mode (InMemory/Streaming)
  2. Data Table: Scrollable table with column headers
  3. Status Bar: Current row range, total rows, and available commands

Column Rendering

  • Strings are displayed as-is with proper Unicode width calculation
  • Numbers are formatted with appropriate precision
  • Null values are displayed as NULL
  • Long values are truncated with ... to fit column width

Programmatic Usage

The TUI components can also be used programmatically in your Rust code:

use alimentar::tui::{DatasetAdapter, DatasetViewer};
use alimentar::ArrowDataset;

// Load dataset
let dataset = ArrowDataset::from_parquet("data.parquet")?;
let adapter = DatasetAdapter::from_dataset(&dataset)?;

// Create viewer with custom dimensions
let mut viewer = DatasetViewer::with_dimensions(adapter, 80, 24);

// Navigate programmatically
viewer.scroll_down();
viewer.page_down();
viewer.home();

// Search
if let Some(row) = viewer.search("query") {
    println!("Found at row {}", row);
}

// Render to strings
for line in viewer.render_lines() {
    println!("{}", line);
}

See Also