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/put for flat files, set, merge/in=, BY-group first./last., arrays, retain, the sum statement, where, and keep/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 .sas7bdat reader (32/64-bit little-endian, RLE/RDC and uncompressed) plus delimited CSV/TAB/DLM and .xlsx import/export with a dependency-free reader/writer.
  • Talks to databases. libname engines 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/%mend with %do and %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.