Databricks Atlas Case Studies Pricing Start a pilot

Hard sources — not covered by free tools

Also parsed — certify what free tools miss

Campaign

Warehouses

Runtimes

Global Airline Converts 3,200 DataStage Jobs to DBT on Snowflake — 2,140 SQL Models, 1,060 Snowpark Jobs, Sequences as the DAG

MigryX Case Study • June 2026 • Airline & Operations

Executive Summary

A global airline’s ops and revenue warehouse still ran on IBM DataStage: 3,200 parallel and server jobs, 410 sequences, 2.7 million lines of stage logic and BASIC, PX sort-merge and a leftover of C transformers. Snowflake was already the commercial analytics store. The data-platform team had standardized on DBT for everything that is a SELECT. MigryX parsed .dsx exports, turned SQL-shaped stage graphs into DBT models with ref() matching sequence predecessors, and left 1,060 jobs as Snowpark where a transformer was a state machine or a C UDF. Fourteen months. Two IATA settlement months dual-ran. DataStage engines are powered off. Three-year gap: $6.1 million.

Client Overview

Passenger service, crew, inventory, and proration grew a DataStage estate because that is what the 2011 EDW program bought. Commercial finance already queried Snowflake. Ops still waited on an on-prem PX grid. A prior attempt to “rewrite in Snowpark” produced 200 jobs and a revolt — analysts could not review Python. DBT was the peace treaty: SQL in Git, sequences as the project DAG, PX leftovers named as Python models.

This is not the federal DataStage-to-Snowflake SQL-only story and not the energy DataStage-to-Databricks story. The target contract is dbt. Snowflake is the warehouse DBT runs on.

Business Challenge

The MigryX Approach

Classifier on each job: if every stage maps to SQL (sequential file → source, transformer expressions → SELECT list, join/agg/filter/sort → SQL), emit a DBT model. Link metadata became column tests where DataStage had not-null or unique constraints. Sequence job links became ref() plus a dbt_project.yml selector per operational calendar (D-1 ops vs monthly settlement).

1,060 jobs failed that test: C transformers, some hashed lookups with reject links that were actually SCD, and IPC pairs we did not collapse because the downstream job is a 14-hour settlement and needs a checkpoint. Those are Snowpark, invoked from DBT Python models or Snowflake Tasks that an exposure documents. Shared containers that were SQL became macros; the 18 that were C became one Python package.

Target Architecture

DataStage PX + sequences → MigryX → DBT on Snowflake (Snowpark for C / IPC / SCD leftovers)

DataStageDataStage
PX jobsPX / Server3,200 jobs
SequencesSequences410 DAGs
ContainersShared containers220, once
MigryXMigryX
dbt emitdbt emit2,140 SQL models
SnowparkSnowpark emit1,060 PX / C
SnowflakeSnowflake + DBT
dbt Coredbt CoreSelectors = calendars
WarehousesVirtual WHOps vs settlement
SnowparkSnowparkC / IPC / SCD
TasksTasksWhere sequences branched
GitGitHub ActionsCI + slim CI
TestsTestsFrom DS constraints

A sequence that used COND-style branching is a DBT selector plus a Task, not a 400-line Jinja if-block. We kept that boring on purpose.

Estate Inventory and Cutover Waves

DomainJobsdbt / SnowparkLOCWave
Inventory / PSS820610 / 210700k1–2
Crew / ops610420 / 190520k2
Revenue / proration740480 / 260680k3
Loyalty430310 / 120360k3–4
Finance / IATA380220 / 160280k4
Shared containers220100 / 120160kAll

2,140 + 1,060 = 3,200. Settlement (IATA) stayed last because the file layout is a contract with clearing houses, not an internal dashboard.

01Parse .dsxStages, links, sequences
02ClassifySQL graph vs C / IPC / SCD
03Emitdbt model or Snowpark + exposure
04ParityIATA file hashes, two months
05CutSelector live, PX engine off

What held

Results

3,200
DataStage jobs
2,140
dbt SQL models
1,060
Snowpark exceptions
2.7M
Stage + BASIC lines
$6.1M
3-year PX + license gap
14 mo
Engines powered off
"We had already decided DBT was how SQL gets to production. DataStage was 3,200 reasons that decision was stuck. The useful work was the classifier — what is a model, what is still a job — not another Snowpark monorepo."

— Director of Data Platform, global airline

DataStage to DBT, Snowflake as the warehouse

Sequences become refs and selectors. C and IPC stay named Snowpark. Same parser, no pretend-100% SQL.

Explore DBT modernization →

Explore other modernizations

Targets: Snowflake Databricks Google Cloud Azure AWS PySpark Polars Iceberg DBT SQLMesh
Sources: SAS Alteryx Talend Qlik DataStage Informatica COBOL Oracle Teradata SSIS