Databricks
Atlas
Case Studies
Pricing
Start a pilot
Campaign
Warehouses
DATA step, PROC SQL, and macros parsed structurally. Emitted as Snowflake SQL and Snowpark where SQL is not enough. Tasks replace the SAS scheduler.
Deterministic parsers read the SAS estate and emit native Snowflake code — not SAS replayed through a warehouse connector.
SAS programs → SAS2PY parser → SQL + Snowpark + Tasks
SAS2PY Parser
Deterministic parse
AI optional
AI is an optional add-on, off by default — the conversion runs end to end without it, air-gapped if your estate requires it.
Most SAS estates are SQL wearing a SAS costume. We emit native Snowflake SQL so the compute that bills you is the compute that runs the join.
Expanded once, then written as procedures and views a Snowflake engineer can own.
SAS Grid queues become Snowflake Tasks. No extra scheduler appliance.
A SAS PROC SQL join with a calculated segment — emitted as Snowflake SQL, not a cursor loop.
/* SAS PROC SQL */
proc sql;
create table gold as
select c.cust_id, t.amount,
case when t.amount > 1000 then 'GOLD'
else 'STD' end as segment
from cust c, txn t
where c.cust_id = t.cust_id;
quit;
-- PROC SQL → Snowflake
CREATE OR REPLACE TABLE gold AS
SELECT c.cust_id, t.amount,
CASE WHEN t.amount > 1000 THEN 'GOLD'
ELSE 'STD' END AS segment
FROM cust c
JOIN txn t ON c.cust_id = t.cust_id;
Implicit SAS join becomes an explicit JOIN. The CASE is already the target language.
| SAS | Snowflake | Notes |
|---|---|---|
| PROC SQL | Snowflake SQL | Joins, GROUP BY, QUALIFY |
| DATA step | SQL / Snowpark | Set-based rewrite |
| Macro | Expanded SQL | No leftover %LET |
| SAS dataset | Snowflake table | DDL from schemas |
| SAS Grid | Tasks + Streams | Warehouse-native |
| Formats / informats | Mapped types | Date and numeric |
SAS output compared to Snowflake output — row by row, column by column. Differences flagged before sign-off.
See how Data Matching works →Clinical SAS programs modernized to Snowflake SQL with audit-ready validation evidence for regulated data. $6.8M saved in 12 months.
Read the case study →