원문 캡처 · github.com
원문 캡처 · github.com

datui는 Parquet, CSV, JSON, Arrow, Excel, SQLite 등의 데이터를 터미널에서 탐색하는 도구다. 로컬 파일뿐 아니라 S3, GCS, Azure, HTTP(S), 표준 입력과 Python의 Polars 프레임도 열 수 있다.

설치 안내는 문서에 있으며, 셸에서 설치하려면 다음 명령을 사용한다.

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

Windows에서는 winget install derekwisong.datui, Python에서는 pip install datui, Rust에서는 cargo install datui --locked로 설치할 수 있다. macOS와 Linux용 Homebrew 설치 방법과 Linux 배포판별 저장소, 바이너리는 설치 안내와 최신 릴리스에서 확인할 수 있다.

홈 화면에서 로그인 없이 열 수 있는 예제 데이터셋을 고르거나, NOAA 날씨 데이터 예시를 다음처럼 실행할 수 있다. 이 데이터는 3,800만 행이다.

sh
datui s3://noaa-ghcn-pds/parquet/by_year/YEAR=2024/

화면마다 ?를 누르면 키 안내가 나오며, Esc는 이전 화면으로 돌아가고 Ctrl+Q는 종료한다. /로 텍스트를 찾고, :로 SQL이나 q 질의를 실행하며, 정렬·필터링·값 개수 확인·차트 작성·데이터 내보내기도 지원한다. 전체 기능과 키 조합은 사용 안내에서 확인할 수 있다.

프로젝트 설명에 따르면 datui는 Rust와 Polars를 사용하며, 화면에 표시할 행과 미리보기 버퍼만 수집하도록 설계됐다. 원격 Parquet 파일은 전체를 내려받는 대신 스키마와 행 수를 확인한 뒤 화면에 필요한 행 그룹을 읽는다. 제작자는 로컬 파일에서 첫 행을 밀리초 단위로, S3에서는 1초 이내에 표시한다고 설명하며, 자세한 수치는 성능 문서에 공개했다.

datui는 편집기가 아니다. 셀을 수정할 수 없으며, 내보내기를 기존 파일에 덮어쓰는 경우를 제외하면 연 파일에 쓰지 않는다. 결과를 보존하려면 복사하거나 내보내야 한다. 프로젝트는 텔레메트리와 업데이트 확인을 하지 않으며, 사용자가 열거나 찾아보는 데이터와 클라우드 계정에만 연결한다고 설명한다.

Python 모듈에서 Polars의 DataFrame 또는 LazyFrame을 열고, 현재 질의·필터·정렬을 LazyFrame으로 돌려받을 수도 있다.

python
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 안내와 Python API를 참고하면 된다.