Data Transformation

Data transformation is the process of converting data from one format, structure, or representation into another so it fits the shape a destination system, model, or analysis actually requires — reshaping a wide table into a long one, aggregating transaction-level records into daily summaries, normalizing a numeric column onto a common scale, converting a nested JSON response into flat relational rows. It is the "T" in ETL (extract, transform, load) and ELT (extract, load, transform), the two dominant architectural patterns for moving data from source systems into a warehouse, and it sits conceptually between data cleaning (fixing what's wrong with data) and feature engineering (building new predictive inputs for a model) — transformation is specifically about reshaping data that's already considered correct into a different, more usable form.

ETL and ELT differ only in when transformation happens relative to loading, but that ordering has real architectural consequences. In ETL, data is transformed before it's loaded into the destination warehouse — the transformation logic runs on a separate processing layer, and only cleaned, reshaped data ever lands in the warehouse. In ELT, raw data is loaded into the warehouse first, and transformation happens afterward, using the warehouse's own compute to reshape the data in place — an approach that became dominant as cloud data warehouses (Snowflake, BigQuery, Redshift) made in-warehouse compute cheap and scalable enough to handle transformation workloads that previously required dedicated external processing infrastructure. ELT's main practical advantage is flexibility: raw, untransformed data stays available in the warehouse, so a transformation mistake can be fixed by rerunning the transformation step rather than re-extracting from the original source, which is often the slower and more fragile part of the pipeline.

Source data
application database, API, event logs
ETLtransform before loading
Extract
pull from source
Transform
reshape on a separate processing layer
Load
only clean, reshaped data enters the warehouse
ELTtransform after loading — modern default with cloud warehouses
Extract + Load
raw data lands in the warehouse first
Transform
reshaped in place using the warehouse's own compute
Analysis-ready tables

Common transformation operations recur across nearly every data pipeline regardless of domain: aggregation (collapsing many rows into a summary, like daily revenue from individual transactions), pivoting and unpivoting (reshaping data between wide format, one column per category, and long format, one row per category), joining (combining records from multiple tables based on a shared key), and normalization or standardization (rescaling numeric values onto a common range or distribution, a step that matters significantly for distance-based and gradient-based models, as covered under feature scaling). Pivoting specifically trades one kind of usability for another: wide format is often easier for humans to scan (one row per customer, one column per month), while long format is often what statistical and visualization tools actually expect as input, which is why the same dataset frequently gets pivoted back and forth depending on which tool is consuming it next.

dbt (data build tool) has become the dominant framework for managing SQL-based transformation logic in modern ELT pipelines specifically because it treats transformation as software — version-controlled, testable, and documented — rather than as untracked, one-off SQL scripts scattered across a data team. This formalization addresses a problem that predates dbt but that dbt specifically targets: transformation logic that lives only in an individual analyst's personal scripts is neither reviewable by teammates nor recoverable if that person leaves, and a transformation bug introduced without version history is far harder to trace back to the change that caused it than one tracked through a standard code review and deployment process.

Idempotent transformation — designing a transformation step so that running it twice on the same input produces the same output as running it once — is a specific engineering discipline aimed at pipeline reliability, because transformation steps routinely need to be rerun after a failure, a schema change, or a correction to the transformation logic itself, and a non-idempotent transformation (one that, for instance, appends new rows every time it runs rather than replacing them) silently corrupts a dataset the second time it's executed, a failure mode that's often invisible until someone notices duplicated or inflated downstream numbers.

Read data transformation as the reshaping layer that sits between raw extracted data and whatever form an analysis, model, or report actually needs: the ETL-versus-ELT choice is really a decision about when that reshaping happens relative to loading, the recurring operations — aggregation, pivoting, joining, normalization — cover most real transformation work regardless of domain, and the field's push toward version-controlled, idempotent transformation logic (via tools like dbt) exists because transformation bugs are otherwise some of the hardest pipeline failures to trace back to their source.

Take data transformation further

Ask the copilot about this term, or have our engineers assess it against your process.