Practical notes for the hard migrations.
Patterns for reading legacy workflows, preserving transformation intent, and turning visual ETL into code your team can review and maintain.
Choose the file you have.
Each guide covers one source and target pair, including the parts that still need review.
SSIS to dbt: Convert .dtsx Packages into dbt Models
An SSIS package carries row transformations and job orchestration in the same file. A usable dbt migration separates them before any model SQL is written.
Read the guideAlteryx to dbt: Convert .yxmd Workflows into Models
An Alteryx canvas and a dbt DAG describe related work in different forms. The migration succeeds when tool connections, branch semantics, and field behavior survive the move.
Read articleAlteryx to PySpark: Convert .yxmd Workflows into DataFrames
PySpark can express most row-level Alteryx work cleanly, but branch outputs, field types, and connection behavior need more care than a tool-name substitution.
Read articlePower Query to dbt: Convert M Code into dbt Models
Power Query stores its logic as a chain of named expressions. dbt needs that chain rebuilt as SQL dependencies, sources, and models that a repository can own.
Read articleTableau Prep to BigQuery: Convert .tfl Flows into SQL
Moving the data source to BigQuery doesn't retire Tableau Prep. Replacing the flow means translating its transformation graph into BigQuery SQL that the warehouse can own.
Read articleConverting SSIS Packages (.dtsx) to Azure Data Factory
Lifting SSIS into Azure Data Factory is two migrations, not one. The row-level logic becomes a Mapping Data Flow, and the control flow becomes something else entirely.
Read articleConverting Alteryx Workflows (.yxmd) to SQL
Alteryx workflows keep their logic in a tool canvas instead of text. Converting one to SQL reliably starts with the right file, then with mapping each tool to its exact equivalent, including the tools that don't have a clean one.
Read articleConverting SSIS Packages (.dtsx) to SQL and PySpark
SSIS packages mix two different things: control flow (task orchestration) and data flow (row-level transformation). Converting them to SQL or PySpark starts with separating the two.
Read articleConverting Power Query (M Code) to SQL
Power Query is the one input format that's code, not a node graph. That changes how you convert it: the structure has to be recovered from a let-binding chain instead of a canvas.
Read articleConverting Tableau Prep Flows to SQL Automatically
Most Tableau Prep migrations stall because teams cannot see the exact logic inside the flow. The fastest path is to extract the structure first, then generate readable SQL that engineers can review.
Read articleTableau Prep to AWS Glue: What to Keep and Simplify
AWS Glue is a practical target for teams standardizing on the AWS data stack, but migration works best when the generated job stays DataFrame-first and avoids unnecessary DynamicFrame complexity.
Read articleUnderstanding Legacy ETL Flows Without the Original Builder
The real problem with legacy ETL is not just old tooling. It is missing context. Teams need a repeatable way to explain what a flow does before they can migrate, consolidate, or replace it.
Read articleTableau Prep to dbt: Why a Scaffold Beats a Single SQL File
If the output of a migration is only one long SQL file, the team still has work left to do. dbt needs structure: models, sources, and schema files that match the generated logic.
Read article