Start here →
DATA step and PROC SQL parsed structurally. Emitted as set-based BigQuery SQL and Dataform models. Cloud Composer replaces the SAS scheduler.
Deterministic parsers read the SAS estate and emit native Google Cloud code — not SAS rehosted on a GCE VM.
SAS programs → SAS2PY parser → BigQuery + Dataform + Composer
SAS2PY Parser
Deterministic parse
AI optional
Google Cloud
IAM + CLS
Least privilege
AI is an optional add-on, off by default — the conversion runs end to end without it, air-gapped if your estate requires it.
BigQuery bills the query, not the box. No cluster to size for month-end.
Dataform models are versioned, tested, and have declared dependencies.
The modernization lands inside your project, with IAM and column-level security from the parsed lineage.
A DATA step running total with a BY-group reset — emitted as a window function, not a retained variable.
/* SAS running balance */ data gold; set txn; by account_id month; if first.month then bal = 0; bal + amount; run;
-- RETAIN → window function
SELECT account_id, month, amount,
SUM(amount) OVER (
PARTITION BY account_id, month
ORDER BY txn_date
ROWS UNBOUNDED PRECEDING
) AS bal
FROM txn;
RETAIN and FIRST. become a window frame. The BY-group is a PARTITION BY.
| SAS | Google Cloud | Notes |
|---|---|---|
| PROC SQL | BigQuery SQL | Standard SQL emit |
| DATA step RETAIN | Window functions | Running totals |
| Macro | Dataform SQLX | Parameterized models |
| SAS dataset | BigQuery table | Partition + cluster |
| SAS Grid | Cloud Composer | DAG orchestration |
SAS output compared to Google Cloud output — row by row, column by column. Differences flagged before sign-off.
See how Data Matching works →Patient analytics and claims processing modernized to BigQuery and Dataform. HIPAA-compliant serverless scale, $4.0M saved in 9 months.
Read the case study →