Articles published on this website summarize publicly available information, industry research and educational materials.
ETL Overview
Extract, Transform, Load (ETL) refers to a pipeline pattern in which data is read from one or more source systems, modified to conform to the requirements of a destination system, and written to that destination. ETL pipelines underpin data warehousing, data migration, and system synchronization use cases across enterprise environments.
The pattern dates to the early days of data warehousing, where operational databases needed to feed reporting and analytical systems with cleaned, consolidated data. While the underlying concept has remained consistent, the tooling and deployment models have evolved significantly — from dedicated on-premises ETL servers to cloud-hosted data pipeline services and ELT patterns enabled by cloud data warehouses.
Extraction Patterns
Full Extraction
Full extraction reads the complete contents of a source table or dataset on each pipeline run. This is the simplest approach and appropriate when source data volumes are small or when a complete snapshot is required. It is impractical for large datasets extracted frequently, as it places proportional load on the source system and network regardless of how much data has changed.
Incremental Extraction
Incremental extraction reads only records that have been created or modified since the last extraction run. Implementing this requires a reliable way to identify changed records — typically through a timestamp column tracking last modification, a change data capture (CDC) mechanism that reads database transaction logs, or a high-water mark value stored by the pipeline.
Change Data Capture
CDC reads changes directly from a source database's transaction log, capturing every insert, update, and delete as they occur. This approach minimizes impact on the source system and enables near-real-time replication. It requires access to database transaction logs and tooling that can parse the specific log format of the source database engine.
Transformation Approaches
Transformations reshape extracted data to conform to the target schema, data types, or semantic model. Common transformation operations include field renaming and reordering, data type conversion, concatenation and splitting of fields, lookup joins to enrich records with reference data, aggregation, filtering of unwanted records, and deduplication.
In ELT patterns, raw data is loaded into the destination first and transformations are applied using the query engine of the destination system — typically a cloud data warehouse. This approach leverages the parallel processing capabilities of modern data warehouses for transformation, shifting computation from the pipeline tool to the destination.
Load Strategies
Full refresh loading replaces all destination records on each run, providing a consistent snapshot but requiring truncation of the destination before each load. Incremental loading appends new records or updates existing records without removing unaffected data. Upsert (update or insert) logic handles records that may or may not already exist in the destination based on a key field.
Slowly Changing Dimensions (SCD) are a specific challenge in data warehousing loads, where reference data — such as customer addresses or product categories — changes over time and historical records must preserve the value that was current at the time of the transaction rather than the current value.
Scheduling and Orchestration
Pipeline scheduling defines when extractions and loads run, ranging from nightly batch windows to sub-hourly micro-batch intervals. Pipeline orchestration tools manage dependencies between pipeline steps, ensuring that a transformation does not run until its upstream extraction has completed, and providing retry logic for failed steps.
Directed acyclic graph (DAG) based orchestrators represent pipeline dependencies as nodes and edges, enabling complex multi-step pipelines with conditional branching and parallel execution of independent steps.
Error Handling
Robust ETL pipelines require explicit error handling at each stage. Extraction failures may result from source system unavailability, schema changes, or connectivity issues. Transformation failures may result from unexpected data values — null fields where non-null is expected, values outside defined ranges, or encoding issues. Load failures may result from constraint violations in the destination system.
Common approaches include quarantine tables that capture records that fail validation for later review, alerting on failure conditions, and idempotent pipeline designs where re-running a failed pipeline from a known checkpoint does not result in duplicate records.