Is my pipeline actually idempotent?
There is one test. Run it twice on the same input and diff the output. If it differs, it is not.
Tag
17 pieces tagged “pipelines”, newest first.
There is one test. Run it twice on the same input and diff the output. If it differs, it is not.
Upsert on a natural key, and refuse to let an out-of-order replay overwrite good data with stale data.
Every write replaces a named slice rather than adding to a pile, so rerunning a job is safe and backfilling is routine.
Derive the key from the content instead of an auto-increment, so reprocessing the same row produces the same key.
Every write replaces a named slice rather than adding to a pile, so rerunning a job is safe and backfilling is routine.
Validate the shape of incoming data where it enters your system — fail loudly on structure, warn on distribution.
Reprocess the last N days every night so late-arriving events are picked up instead of landing in a closed window.
Derive the key from the content instead of an auto-increment, so reprocessing the same row produces the same key.
Validate the shape of incoming data where it enters your system — fail loudly on structure, warn on distribution.
Reprocess the last N days every night so late-arriving events are picked up instead of landing in a closed window.
Reprocess the last N days every night so late-arriving events are picked up instead of landing in a closed window.
Validate the shape of incoming data where it enters your system — fail loudly on structure, warn on distribution.
Two years of Kafka for a use case that a five-minute batch would have served.
Every write replaces a named slice rather than adding to a pile, so rerunning a job is safe and backfilling is routine.
Upsert on a natural key, and refuse to let an out-of-order replay overwrite good data with stale data.
Late-arriving events, a seven-day lookback, and how to tell finance about it without a crisis.
A vendor renamed a field. We found out from a stakeholder. Here is the boundary check we should have had.