Query an archive of files as one logical table.
Cold archives pile up as one .at1 per unit — per branch, per meter, per day. at1 crossview builds a manifest-aware UNION of those files (cashup_*.at1 → view cashup) and queries them as a single table, using per-file min/max stats to prune every file a filtered query can't touch.
- one logical table
- a directory of per-unit .at1 files, queried as a single view
- min/max pruning
- a filtered query skips files whose range can't match
- no re-ingest
- the files stay as they are — the view is just a manifest over them
- byte-exact source
- each underlying .at1 is still verified-lossless on its own
Per-unit files, one view
An archive is naturally one file per branch, meter or day (cashup_07.at1, cashup_08.at1…). A view unions them by name pattern into one table you can query as cashup.
Skip what can't match
The manifest records each file's min/max per column. A query filtered to one date or one branch reads only the files whose range overlaps — the rest are never opened.
Explain the plan
Ask the view to explain a query and it tells you which files it will touch and which it pruned — so you can see the skip working before you trust it.
The workflow
# build a manifest over an archive dir (with per-file min/max stats) at1 crossview build-manifest ./archive -o archive.manifest # list the views the name patterns resolved to (cashup_*.at1 -> cashup) at1 crossview views archive.manifest # query across all matching files as one table at1 crossview query archive.manifest "SELECT SUM(total) FROM cashup WHERE date = '2026-07-14'" # see which files the query will read and which it pruned at1 crossview explain archive.manifest "SELECT * FROM cashup WHERE branch = 7"
Honest scope
The pruning win depends on your files being range-separable on the columns you filter — one file per day prunes hard on a date filter, but a column that's uniformly spread across every file can't be skipped and the query reads them all. The view is a read layer over existing .at1 files; it doesn't re-compress them. The right measure is your acceptance test on real data — run explain on your own archive and see how many files actually prune. Validated on synthetic per-unit archives; partner acceptance is pending.