An open-source, SAS-compatible data processing and analytics engine, written in Go and driven from the command line.
ASS — Analyst's Statistical Suite — is an open-source, SAS-compatible data processing and analytics engine written in Go and driven from the command line. It targets behavioral compatibility with a practical subset of SAS: the DATA step, the workhorse PROCs, formats, and macro basics. It's built for analysts who live in real-world ETL and reporting and want a portable, dependency-light engine they can run anywhere.
Highlights
- Real DATA step.
input/datalines,infile/file/putfor flat files,set,merge/in=, BY-groupfirst./last., arrays,retain, the sum statement,where, andkeep/drop/rename. - The workhorse PROCs. PRINT, SORT, SQL (via embedded SQLite), MEANS/SUMMARY, FREQ (one-/two-way and n-way list, chi-square), REG/GLM (OLS with CLASS predictors), and FORMAT (VALUE, INVALUE, PICTURE).
- Reads native SAS data. A clean-room
.sas7bdatreader (32/64-bit little-endian, RLE/RDC and uncompressed) plus delimited CSV/TAB/DLM and.xlsximport/export with a dependency-free reader/writer. - Talks to databases.
libnameengines for Postgres, SQL Server, Oracle, and SQLite — read tables as datasets and write them back. DB2 is available as an optional build. - Macros and formats.
%let/&var,%macro/%mendwith%doand%if, plus the full format/informat surface —dollar,comma,percent, date/time literals, and user formats. - PROC PROOF. A data-quality value-add: assert
require,notnull,range,unique, referential keys, and custom rules over a dataset, with a violations output and non-zero exit on failure. - Corpus-backed. The bundled compatibility corpus passes
100% via
ass test, with compatibility measured at the level of values and results.
A taste
data people;
input name $ age;
datalines;
John 25
Mary 30
Tim 12
;
run;
proc sort data=people out=sorted;
by descending age;
run;
proc print data=sorted;
run;
Installation
Build from source with Go — no C compiler required:
git clone https://github.com/Solifugus/ass.git
cd ass
go build -o ass ./cmd/ass
go test ./...
PROC SQL and the SQLite engine embed a pure-Go SQLite driver, so the whole
engine builds with CGO_ENABLED=0 into a fully static, portable
binary. The only optional CGo piece is the DB2 engine
(CGO_ENABLED=1 go build -tags db2). Run a program with
ass file.sas, or start an interactive session with
ass repl.
Downloads & installation
Builds are coming soon. Grab the source from GitHub for now.