Migration
SAS to Snowflake migration: moving SAS analytics and ETL into Snowflake
How to migrate SAS workloads to Snowflake: pushing processing down with SAS/ACCESS as an interim step, converting PROC SQL and DATA steps to SQL and Snowpark, replacing macros, formats and PROCs, and validating models.

Hemant Walchale
· 2 min read
SAS licences are among the most expensive in analytics, and SAS skills are increasingly scarce. Organizations whose data already lives in Snowflake, or is moving there, can move SAS workloads into Snowflake too. SQL-style logic becomes Snowflake SQL; analytical and statistical code moves to Snowpark Python running inside Snowflake.
This is the approach we recommend.
1. Inventory and classify
Collect SAS programs, Enterprise Guide projects, DI Studio jobs, macro libraries, format catalogues, schedules, datasets and consumers. Classify each program as data preparation, reporting or modelling, and retire what usage logs show is unused.
2. Move data first, with SAS still running
Load SAS datasets and source data into Snowflake, then point SAS programs at Snowflake through SAS/ACCESS so heavy SQL runs in Snowflake. This cuts processing time on SAS servers and lets programs be converted one by one.
3. Convert programs
| SAS | On Snowflake |
|---|---|
PROC SQL |
Snowflake SQL |
| DATA step (filter, derive, merge) | SQL, or Snowpark DataFrames |
BY groups, FIRST., LAST., RETAIN, LAG |
Window functions |
PROC SORT, PROC TRANSPOSE |
ORDER BY where needed, PIVOT and UNPIVOT |
PROC MEANS, PROC FREQ, PROC SUMMARY |
GROUP BY aggregates |
PROC REG, PROC LOGISTIC and other modelling PROCs |
Snowpark Python with statsmodels or scikit-learn |
| Macros and macro variables | dbt macros and variables, or Python functions |
| Formats | Lookup tables or CASE expressions |
| SAS datasets | Snowflake tables |
| Scheduled SAS jobs | Snowflake Tasks or an orchestrator |
| Reports | Your BI tool or Streamlit in Snowflake |
4. Validate side by side
Compare outputs on the same inputs: row counts, totals and row-level values for data preparation; coefficients, scores and performance metrics for models, within tolerances agreed with model owners. SAS missing values (which sort below all numbers), rounding and date origins cause most differences. Regulated models need documented revalidation.
5. Retire SAS products
Plan waves around licence renewals and retire products as their workloads empty.
The short version
Move data to Snowflake first and use SAS/ACCESS as a bridge, convert PROC SQL and DATA steps to SQL, rebuild models in Snowpark Python, replace macros and formats, validate side by side and retire SAS licences product by product.
Compare with SAS to Databricks, or browse all migration guides.
Not sure where your own platform stands? Take the free 3-minute data platform scorecard, or see how we work on Snowflake. Unfamiliar terms are explained in the data engineering glossary.