Hard sources — not covered by free tools
Also parsed — certify what free tools miss
Runtimes
After migration
MigryX converts SAS, Talend, Qlik, Alteryx, IBM DataStage, Informatica, Oracle ODI, SSIS, Teradata, COBOL, and SQL dialects directly to Polars — LazyFrame pipelines and expressions, with DuckDB when SQL is relational and Iceberg when the lake is already the source. 95%+ parsing accuracy, column-level lineage, Apache Arrow and Rust. No Spark cluster for a mid-size job.
Polars Targets
Every modernization generates production-ready Polars artifacts — LazyFrame pipelines with automatic query optimization, Polars expressions, SQL on Polars or DuckDB, Iceberg scans from the catalog you already run, and Arrow-native output.
Lazy evaluation pipelines with predicate pushdown, projection pruning, and automatic query optimization — up to 50x faster than eager pandas execution.
Expressive column-level operations using Polars' expression API — .filter(), .with_columns(), .group_by().agg() — fully type-safe, composable, and parallelized.
Simple SELECT, filter, project, and light aggregation stays in Polars SQL — no extra process. Mix SQL with the expression API on the same frames.
Native Apache Arrow memory format with zero-copy reads/writes. Output to Parquet, Arrow IPC, CSV, JSON, Delta Lake, or any Arrow-compatible format.
Process datasets larger than memory using Polars' streaming execution engine — chunked lazy evaluation for terabyte-scale data on a single machine.
When converted SQL looks like Spark SQL — joins, CTEs, windows — DuckDB runs on the same machine as Polars, executes the query, and returns a Polars DataFrame. No cluster.
Automated data quality profiling — null counts, cardinality, distributions, schema drift detection — generated alongside every modernization output.
Scan Iceberg from the catalog you already configured, then stay in Polars expressions — or let DuckDB query Iceberg and hand the result back. Lineage still publishes to Unity, DataHub, OpenMetadata.
How the job runs
Row-level transforms always become Polars expressions. SQL and lake reads pick the engine that fits the workload — chosen per conversion, not hardcoded in the source. DuckDB is assumed installed next to Polars. Iceberg credentials stay in your existing catalog. We do not stand up a new warehouse.
Default for simple SELECT, filter, and project on in-memory frames. Short SQL from SAS, Teradata, Oracle, or COBOL stays in Polars. No extra process.
When the SQL looks like Spark SQL — joins, CTEs, windows. DuckDB registers the frames, runs the query on the same machine, and returns a Polars DataFrame. Closest in-process stand-in for a Spark SQL job without a cluster.
Little SQL. A lot of lake data. Scan Iceberg from the catalog you already run, then filter, derive, and aggregate in Polars — the same LazyFrame path as a local dataset.
Relational SQL over lake tables, result back in Polars. DuckDB reads Iceberg directly — no full-table preload. Warehouse pass-through (Oracle, Teradata, …) is unchanged; those connections still go to the database.
Modernization Sources
Purpose-built parsers for each source platform. Not generic scanners. Every conversion produces explainable, auditable, Polars-native code.
Automate SAS Base, Macro, PROC SQL, and IML to Polars LazyFrames. Simple PROC SQL stays in Polars; joins, CTEs, and windows run in DuckDB on the same machine. Iceberg tables scan into expressions, or DuckDB queries Iceberg and hands the result back.
Parse Talend project exports (ZIP/Git), .item artifacts, tMap joins, metadata, contexts, and connections — converted to Polars LazyFrame pipelines and expressions with full component-level lineage.
Parse Qlik Sense .qvf apps, QlikView .qvw documents, and .qvs includes — load scripts, ApplyMap, JOIN/RESIDENT, and QVD stores — converted to Polars LazyFrame pipelines and expressions with full script-level lineage.
Convert Alteryx Designer workflows (.yxmd/.yxwz), macros, and apps to Polars LazyFrame pipelines and Polars SQL — tool-by-tool translation with full lineage preservation and expression output.
Modernize IBM DataStage parallel and server jobs, sequences, shared containers, and XML definitions to Polars LazyFrame pipelines and Arrow IPC — transformer logic fully preserved.
Modernize Informatica PowerCenter (.xml exports) and IDMC/IICS mappings — sources, targets, transformations, and workflows — to Polars expressions with catalog lineage registration.
Parse Oracle ODI repository exports — mappings, interfaces, knowledge modules, packages, and load plans — converted to Polars LazyFrame pipelines and Parquet with full column-level lineage.
Parse SQL Server Integration Services .dtsx packages and .ispac archives — data flow, control flow, SSIS expressions, C#/VB.NET script tasks — to Polars LazyFrame pipelines and expressions.
Modernize Teradata BTEQ, FastLoad, MultiLoad, and Teradata SQL — QUALIFY → window function rewriting, BTEQ command translation, and PRIMARY INDEX advisory — to Polars SQL and LazyFrame pipelines.
Modernize Oracle PL/SQL stored procedures, packages, and triggers with 2000+ function mappings, CONNECT BY → recursive CTE rewriting, BULK COLLECT/FORALL — targeting Polars SQL and expressions.
Parse COBOL programs with their copybooks — packed decimal, implied decimals, REDEFINES overlays, and OCCURS DEPENDING ON — to Polars LazyFrame pipelines. DB2 embedded SQL becomes Polars SQL, and JCL job steps become orchestrated Python tasks with condition codes preserved.
Transpile SQL from Oracle, T-SQL, Teradata, DB2, Netezza, Greenplum, Hive HQL, and Vertica to Polars SQL — or DuckDB when the query is relational. 500+ function mappings, dialect-aware rewriting, warehouse connections left on the database.
Modernize SAS DataFlux dfPower Studio jobs, DMS Data Jobs, and Real-time Services — standardize/parse/match/validate schemes — to Polars expressions with data quality profiling integration.
How It Works
The same proven methodology applies to every source — SAS, Talend, Qlik, Alteryx, DataStage, Informatica, or ODI — all landing on Polars.
Upload source artifacts — SAS scripts, Talend exports, Qlik .qvs/.qvf, DataStage XML, .dtsx packages — into MigryX.
Custom parsers build complete ASTs, expand macros, resolve dependencies, and produce column-level lineage maps.
Parser-driven conversion to Polars LazyFrames and expressions. SQL routes to Polars or DuckDB; Iceberg scans use the catalog you already run.
Row-level and aggregate matching between legacy and Polars outputs. DuckDB and Iceberg paths use the same compare — audit-ready evidence for sign-off.
Publish lineage, STTM, and data contracts to your catalog. MigryX AI surfaces risk and recommends optimization paths.
Platform Capabilities
Every MigryX modernization is engineered for the Polars ecosystem — LazyFrame optimization, Apache Arrow, DuckDB on the same machine when SQL needs it, Iceberg from your existing catalog, and catalog-integrated governance.
Purpose-built for each source language. SAS macro expansion, DataStage XML, Talend .item files, Qlik .qvs/.qvf, SSIS .dtsx, COBOL copybooks — full fidelity, deterministic output, no approximation.
Polars is built on Apache Arrow — zero-copy memory, columnar execution, SIMD. DuckDB interops on the same machine; Iceberg scans use the catalog you already configured. We do not stand up Spark for a mid-size job.
Written in Rust with multi-threaded execution. LazyFrame query optimizer pushes down predicates, prunes columns, and parallelizes operations — up to 50x faster than pandas.
Source-to-target column mappings, STTM tables, and data contracts — full lineage from legacy source through Polars expressions to final output.
AI analyzes parsed metadata to recommend LazyFrame optimizations, partition strategies, and streaming boundaries. Surfaces modernization risk and complexity scoring.
Full deployment behind your firewall with CI/CD packaging. Source code and lineage never leave your network. SOX, GDPR, BCBS 239 ready.
Measurable Results
Organizations using MigryX to land on Polars accelerate delivery, reduce risk, and eliminate manual rewrite costs across every modernization program.
Automated lineage extraction and parser-driven analysis eliminate months of manual discovery and rewrite work.
Complete visibility into dependencies prevents production incidents and modernization-related data defects.
Generated code your team can read, with validation before go-live.
Deterministic parsers handle 95%+ of typical code out of the box.
Why MigryX
Generic ETL scanners approximate lineage. MigryX parses it exactly — every macro, every column, every dialect — then lands it natively on Polars.
| Capability | MigryX | Generic Tools |
|---|---|---|
| Custom parser per source (SAS, Talend, DataStage, etc.) | ✓ | ✗ |
| 100% column-level lineage | ✓ | ~ |
| Native Polars LazyFrame output | ✓ | ✗ |
| Polars expression API generation | ✓ | ✗ |
| DuckDB SQL for joins, CTEs, and windows | ✓ | ✗ |
| Iceberg scan into Polars, or DuckDB over Iceberg | ✓ | ~ |
| SAS macro expansion & full dialect support | ✓ | ✗ |
| COBOL copybook fidelity (packed decimal, REDEFINES, OCCURS DEPENDING ON) | ✓ | ✗ |
| Parser-driven risk analysis & Polars optimization | ✓ | ✗ |
| On-premise / air-gapped deployment | ✓ | ✗ |
| Row-level data validation & parity proof | ✓ | ✗ |
| STTM export & catalog registration | ✓ | ~ |
| Arrow IPC & Parquet output generation | ✓ | ~ |
| Streaming engine for larger-than-memory data | ✓ | ✗ |
✓ Full support ~ Partial / approximate ✗ Not supported