Back to the journal

Project notes / 2 MIN READ

An ETL pipeline should preserve an explanation

A transformed dataset is more useful when its history remains visible.

Sai Sri Harsha Guddati ·

An ETL pipeline is often described as three verbs: extract, transform, load. The description leaves out a fourth responsibility: explain.

My public-data projects include the FBI Data Pipeline and PDF incident-ingestion work. What interests me in these systems is the path from source material to a result someone can interpret.

Keep provenance with the data

An illustrative public dataset may change its fields, revise historical records, or arrive with missing periods. A transformed row should retain enough provenance to identify its source version and the transformation that produced it.

Without that information, a discrepancy becomes difficult to investigate. The pipeline may have changed, the source may have changed, or the analyst may be comparing different definitions.

A timestamp alone is often insufficient. The processing configuration and source identity matter too.

Make invalid records visible

Dropping a malformed record can keep a pipeline running. Quietly dropping many records can make the output misleading.

I would account for input counts, accepted records, rejected records, and the reasons for rejection. A useful error path preserves enough information to diagnose a problem under appropriate access controls.

The goal is not to halt every batch for every anomaly. It is to prevent “success” from concealing an incomplete result.

Schema changes deserve the same treatment. A renamed field should not silently become a column full of null values.

Build for replay

A replay should have a defined meaning. Does it replace a partition, append records, or update existing ones? How does the pipeline distinguish a corrected source from a duplicate delivery?

Those decisions connect ETL design to idempotency and versioning. A reproducible transformation is easier to validate when its inputs and configuration are explicit.

For public data, presentation matters as well. A chart should communicate the dataset's scope and limitations rather than implying that every missing record represents a real-world absence.

The final table is an artifact. The pipeline's explanation is what lets someone trust that artifact, investigate it, and rebuild it when the source changes. Good ETL carries its history forward instead of leaving it behind in a job log.

More from the journal