Written by

Halkwinds Editorial Team

Halkwinds Research & Editorial

Published April 7, 2026
Blog image
Data & Analytics

ETL vs ELT: Which Data Pipeline Architecture Is Right for You

How the shift from ETL to ELT changed the data engineering landscape — with guidance on choosing based on volume, latency, and team skills.

If you've built data pipelines for more than a few years, you've lived through a quiet revolution. The classic ETL (Extract, Transform, Load) pattern that dominated data warehousing for two decades has largely given way to ELT (Extract, Load, Transform). The reordering of two letters sounds trivial, but it reflects a fundamental shift in where transformation logic lives, who owns it, and how fast you can iterate. This article breaks down the ETL vs ELT debate for practicing data engineers — not in the abstract, but with concrete tools, trade-offs, and a decision framework you can apply to your next pipeline.

  • Background / Why This Matters
  • Option A: ELT Data Pipeline
  • Option B: dbt Transformation
  • Decision Framework: How to Choose
  • Common Mistakes / What to Avoid
  • Frequently Asked Questions
  • Conclusion

Background / Why This Matters

The distinction between ETL and ELT comes down to one question: where does the transformation happen?

In a traditional ETL pipeline, you extract data from source systems, transform it in a dedicated processing layer (often a tool like Informatica, Talend, or a custom Spark job), and then load the cleaned, modeled result into your warehouse. The warehouse only ever sees polished data.

In an ELT pipeline, you extract data and load it raw into the warehouse first, then transform it in place using the warehouse's own compute. The transformation is just SQL running against tables you already loaded.

This flipped order became viable because cloud data warehouses changed the economics. Platforms like Snowflake, BigQuery, and Redshift decouple storage from compute, offer near-infinite elastic scaling, and price storage cheaply enough that hoarding raw data is no longer reckless. When your warehouse can crunch billions of rows in seconds and you only pay for what you use, moving transformation into the warehouse stops being a bottleneck and starts being a feature.

Why should you care as a data engineer? Because the ELT shift changed the shape of your job. Instead of maintaining brittle transformation servers and Java-heavy pipeline code, modern teams lean on managed ingestion (Fivetran, Airbyte) and SQL-based transformation frameworks (dbt). The skills that matter now are SQL modeling, data quality testing, and orchestration — not babysitting a middleware box.

Actionable takeaway: Before picking an architecture, audit where your compute costs actually live. If your warehouse is cheap and elastic, ELT usually wins on speed of delivery. If you're bound by legacy on-prem systems, ETL may still be your reality.

Option A: ELT Data Pipeline

An ELT pipeline separates ingestion from transformation cleanly. The typical modern stack looks like this:

  1. Extract + Load: A managed connector like Fivetran or the open-source Airbyte pulls from sources (Postgres, Salesforce, Stripe, Google Ads) and lands raw tables directly into Snowflake.
  2. Transform: SQL-based models run inside the warehouse, converting raw tables into clean staging models, then business-ready marts.
  3. Orchestrate: A scheduler (Airflow, Dagster, or dbt Cloud) triggers ingestion and transformation on a cadence.

Why teams choose ELT

  • Speed to onboard sources. Fivetran and Airbyte handle schema drift, incremental syncs, and API pagination for hundreds of connectors. What used to take weeks of custom extraction code becomes a configuration form.
  • Raw data is preserved. Because you load before transforming, you always have the untouched source. If a business rule changes, you re-run transformations against history instead of re-ingesting.
  • Scales with the warehouse. Transformation performance rides on Snowflake's compute. Need faster models? Resize the warehouse for that job.

The trade-offs

  • Warehouse compute cost. Every transformation burns credits. Poorly written SQL or full-refresh models on large tables can generate surprise bills.
  • Governance on raw data. Loading everything raw means sensitive fields (PII, payment data) land in the warehouse before any masking. You need column-level controls from day one.
  • Connector limits. Managed tools cover common sources well, but exotic or internal APIs may still need custom extraction.
Actionable takeaway: Start with Airbyte if you want open-source flexibility and self-hosting; choose Fivetran when reliability and connector breadth matter more than per-row cost. Either way, tag your transformation warehouses so you can attribute Snowflake spend to specific pipelines.

Option B: dbt Transformation

If ELT is the architecture, dbt (data build tool) is the piece that made the "T" in ELT genuinely engineered rather than a pile of ad-hoc SQL scripts. dbt sits inside your warehouse and turns SQL SELECT statements into a governed, version-controlled, tested transformation layer.

What dbt actually does

  • Modular SQL models. Each model is a SELECT statement. dbt handles the DDL (creating tables/views) and dependency resolution via a ref() function, so you never hardcode table names.
  • Automated DAG. dbt reads your model references and builds a dependency graph, running models in the correct order and in parallel where possible.
  • Testing built in. You declare tests like not null, unique, and relationships in YAML, plus custom SQL assertions. Bad data fails the build instead of silently corrupting a dashboard.
  • Documentation and lineage. dbt generates a browsable docs site showing column descriptions and end-to-end lineage.
  • Version control. Because models are just files, everything lives in Git with pull requests, code review, and CI.

A concrete example

Say Fivetran loads raw Stripe data into Snowflake. Your dbt project would have:

  • stg_stripe__charges.sql — cleans and renames raw columns, casts types.
  • fct_revenue.sql — aggregates charges into daily revenue, referencing the staging model via ref('stg_stripe__charges').
  • A schema test asserting charge_id is unique and amount is never null.

When you run dbt build, it executes the staging model, then the fact model, then the tests — all in dependency order, all in Snowflake compute.

Where dbt fits (and where it doesn't)

dbt is a transformation tool, not an ingestion tool. It assumes data is already in the warehouse — which is exactly why it pairs so naturally with ELT. It won't help you extract from APIs or stream real-time events. For those, you still need Fivetran/Airbyte and possibly a streaming layer like Kafka.

Actionable takeaway: Adopt a layered dbt structure — staging, intermediate, marts — from the start. Retrofitting structure onto a flat pile of 200 models is painful. This is a place where a Halkwinds Data & Analytics engagement often pays for itself: getting the modeling conventions right early prevents years of technical debt.

Decision Framework: How to Choose

The ETL vs ELT decision isn't dogma. Evaluate against four dimensions: data volume, latency requirements, governance needs, and team skills.

Factor Favors ETL Favors ELT
Data volume Moderate, stable volumes where pre-processing reduces load Large or fast-growing volumes; elastic warehouse compute
Latency Batch is fine; some real-time streaming pipelines Batch/micro-batch; frequent business logic changes
Governance / PII Strict rules requiring data be cleaned/masked before landing Column-level controls in the warehouse are sufficient
Team skills Strong in Java/Spark/proprietary ETL tools SQL-fluent analysts and engineers
Infrastructure Legacy on-prem warehouse, fixed capacity Cloud warehouse (Snowflake, BigQuery, Redshift)
Cost model Prefer predictable fixed compute Comfortable with usage-based warehouse billing

A simple decision path

  1. Are you on a modern cloud warehouse? If yes, default to ELT. The economics and tooling overwhelmingly favor it.
  2. Is your team SQL-fluent? If yes, ELT + dbt lowers the barrier to entry dramatically. If your strength is JVM engineering, an ETL/Spark approach may be less friction short-term.
  3. Do you have hard pre-landing masking requirements? If regulated data legally cannot touch the warehouse raw, you'll need a transformation step before load — a hybrid ETL front-end even in an otherwise ELT world.
  4. Do you need sub-second latency? Neither classic ETL nor ELT is ideal. Look at streaming architectures (Kafka, Flink, Snowflake Snowpipe Streaming) as a complement.
Actionable takeaway: Most SMBs and startups building fresh in 2024+ should start with ELT: Fivetran or Airbyte for ingestion, Snowflake as the warehouse, dbt for transformation. Reach for ETL patterns only when a specific constraint demands it.

Common Mistakes / What to Avoid

Adopting ELT doesn't automatically mean a healthy pipeline. These are the failure patterns we see