data-infra

ETL

ETL — Extract, Transform, Load — is the traditional pattern for moving data from operational source systems into an analytical destination like a data warehouse. As the name states, it's three ordered stages: Extract pulls raw data from source systems (production databases, third-party APIs, SaaS tools like Stripe or HubSpot, log files); Transform reshapes that raw data into a clean, consistent, analysis-ready format (standardizing date formats, joining reference tables, computing derived fields, filtering out test/internal records) while it's still in transit, before it ever touches the destination; and Load writes the finished, transformed data into the destination system. Why it matters for AI/SaaS builders: ETL (and its increasingly common inverse, ELT) is the plumbing behind every internal analytics dashboard, every "your usage this month" customer-facing report, and every dataset used to train or fine-tune a custom model on a company's own data. Getting it wrong — silently dropping rows, double-counting on retry, letting schema drift break downstream reports — is one of the most common causes of "the numbers don't match" fire drills in a growing SaaS company. How it works: modern data teams increasingly favor ELT (Extract, Load, Transform) over classic ETL — load raw data into the warehouse first, then transform it there using the warehouse's own compute (via SQL and tools like dbt), rather than transforming in a separate processing layer before load. This shift happened because modern cloud warehouses (Snowflake, BigQuery, Redshift) got cheap and powerful enough to make in-warehouse transformation more flexible than pre-load transformation, and it keeps a copy of the untransformed raw data available if a transformation bug is discovered later — you can just re-run the transform, not the whole extract. Tools like Fivetran and Airbyte standardize the extract-and-load legs for hundreds of common SaaS data sources (Stripe, Salesforce, Postgres, Google Ads) so engineering teams don't hand-write API integration code for each one. Worked example: an AI analytics SaaS needs nightly usage data from Stripe (subscriptions, invoices) and its own product database (feature usage events) combined into one warehouse table for a customer-facing "ROI dashboard." An Airbyte connector extracts raw Stripe data into BigQuery every night; a dbt model then transforms it — joining subscription records to usage events by customer ID, computing "cost per feature used," and materializing the result as a `customer_roi_summary` table — which the dashboard queries directly. When Stripe adds a new invoice status value, the raw extract keeps working (ELT tolerates schema drift at the extract stage) and only the dbt transform needs a one-line update to handle it.

Related terms

More Data & Infra terms