Skip to content
METRIC OAK

New: the 3-week Data Platform Assessment: fixed fee, priced roadmap. See what's included →

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

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.

Frequently asked questions

Can we keep using SAS while moving data to Snowflake?

Yes. SAS/ACCESS Interface to Snowflake lets SAS programs read Snowflake tables and push much SQL processing down into Snowflake. It is a useful interim step: data moves first, and programs are converted afterwards without a big-bang switch.

Where does SAS statistical code run on Snowflake?

In Snowpark Python, which runs inside Snowflake with libraries such as scikit-learn, statsmodels and pandas. Simple summaries (PROC MEANS, PROC FREQ) usually become SQL aggregates.

How are SAS datasets moved?

Read .sas7bdat files with Python (for example pandas.read_sas), write them as Parquet to cloud storage and load them with COPY INTO. Large libraries are converted in parallel batches.

Have 30 minutes? Get a senior architect’s view of your data platform.

No sales deck. You talk to the engineer who would lead the work.

Book an architecture review