facett-icebergview 0.1.6

facett — browse + time-travel an Iceberg table from Arrow frames: a snapshot picker (newest-first, id/timestamp/rows) over a virtualized row grid; engine-agnostic (RecordBatch in)
Documentation

facett-icebergview — browse and time-travel one Iceberg table, drawn from Arrow RecordBatches. The component is engine-agnostic: you hand it, per Iceberg snapshot, the snapshot's metadata + its materialized Arrow frame; it renders a snapshot picker (newest-first, showing snapshot id / timestamp / row-count) over a virtualized, paged row grid (the rows come from [facett_table::Table], built from the batch via [facett_arrow]). Selecting a snapshot loads that snapshot's frame — time travel.

Like every facett component it implements [Facet] (title / ui / state_json), so it drops into a FacetDeck and is robot-testable through facett_core::harness: drive [IcebergView::select_snapshot] / [IcebergView::set_page] headlessly and assert state_json (the current snapshot, the snapshot list, and the visible rows all change). state_json exposes:

  • table — the table name,
  • snapshots — every snapshot newest-first (id, timestamp_ms, rows),
  • current — the selected snapshot id,
  • total_rows / page / page_size / visible_rows — the paged view.

Why not just facett-table? A table viewer shows one frame. This adds the Iceberg dimension — the history of snapshots and the control to scrub between them — which is the whole point of a lakehouse table browser. The adapter that fills it from a real catalog (skade) lives host-side (korp / nornir) so this crate never takes a hard catalog/engine dependency.