Transformer stages parsed from DSX (.dsx) and ISX (.isx) exports. SQL-friendly logic becomes Snowflake SQL; complex stage-variable logic becomes Snowpark Python. Sequences convert to Snowflake Tasks. Full lineage, validated parity.
Upload a job, get converted code →If DataStage jobs extract from sources and land in Snowflake, the parallel engine is just a pass-through. Move the transformation logic into Snowflake SQL or Snowpark and eliminate the DataStage server entirely.
Simple Transformer derivations become Snowflake SQL views and procedures. Complex stage-variable logic with conditionals and lookups becomes Snowpark Python DataFrames — same Snowflake compute, full Python expressiveness.
DataStage Director manages job dependencies and schedules. Snowflake Tasks handle the same DAG orchestration natively — with Streams for change data capture that DataStage would need a separate CDC tool to handle.
A Transformer stage with derived columns and a Lookup reference link — converted to a Snowflake SQL view with JOIN. When stage-variable logic is too complex for SQL, MigryX outputs Snowpark Python instead.
-- Parallel Job: Enrich_Orders -- Source: ORDERS_EXTRACT (DB2 connector) -- Lookup: PRODUCT_REF (reference link) -- Transformer stage: -- sv_total = lnk.QTY * lnk.UNIT_PRICE -- sv_disc = If lnk.TIER = "GOLD" -- Then sv_total * 0.15 -- Else 0 -- out.NET = sv_total - sv_disc -- out.PRODUCT_NAME = ref.NAME -- Target: ENRICHED_ORDERS (dataset)
-- Transformer → Snowflake SQL
CREATE OR REPLACE VIEW enriched_orders AS
SELECT
o.order_id,
o.qty,
o.unit_price,
o.qty * o.unit_price AS total,
CASE
WHEN o.tier = 'GOLD'
THEN o.qty * o.unit_price * 0.15
ELSE 0
END AS discount,
o.qty * o.unit_price
- CASE WHEN o.tier = 'GOLD'
THEN o.qty * o.unit_price * 0.15
ELSE 0 END AS net,
p.name AS product_name
FROM orders_extract o
LEFT JOIN product_ref p
ON o.product_id = p.product_id;
Stage variables become SQL expressions. Lookup reference links become LEFT JOINs. Derivations become computed columns. When logic requires Python, MigryX outputs Snowpark DataFrames instead.
| DataStage Component | Snowflake Equivalent | Notes |
|---|---|---|
| Parallel Job | SQL script / Snowpark notebook | SQL when possible, Snowpark when needed |
| Transformer (simple) | SQL VIEW / procedure | Derivations become SELECT expressions |
| Transformer (complex) | Snowpark DataFrame | Stage variables with nested logic |
| Lookup stage | LEFT JOIN | Reference link semantics preserved |
| Sort stage | ORDER BY | Sort keys and direction preserved |
| Aggregator stage | GROUP BY | All aggregate functions mapped |
| Join stage | JOIN all types | Inner, left, right, full outer |
| Filter / Funnel | WHERE / CASE | Predicate expressions preserved |
| Job Sequence | Snowflake Tasks | DAG orchestration with dependencies |
| DB2 / Oracle connector | External stage / COPY INTO | Staged ingestion |
| Dataset / File stage | Snowflake table | Schema enforcement, clustering |
Data Matching compares DataStage production output against Snowflake query results — row by row, column by column. Mismatches are flagged with column-level evidence before go-live.
See how Data Matching works →Parallel jobs with Transformer stages and Lookup links converted to Snowflake SQL views and procedures. Complex stage-variable logic routed to Snowpark Python. Job sequences converted to Snowflake Tasks. All outputs validated with Data Matching.
Read the case study →Upload a DSX or ISX export. Get parsed lineage, Snowflake SQL or Snowpark code, and a validation report.