Challenge catalog
Isolated SQL, Python ETL, and API → database tasks. Hidden tests grade the submitted state.
Natural-key collapse
Collapse duplicate profiles on a natural key, keep the newest survivor, and reattach child rows.
Incorrect customer join
Repair a report that still joins the old natural key after a surrogate-key migration.
Slow product lookup
Same storefront result, under a hidden latency budget, using an index.
Broken revenue grain
Rebuild daily net revenue so refunds and replacements do not double-count.
Incremental order sync
Watermarked incremental apply with a lookback window for late rows.
Date dimension repair
Build dim_date and convert mixed string dates to date_key with no silent drops.
Vendor catalog merge
Ranked merge of the same SKU from three vendors into one master row.
SCD Type 2 customer history
Track customer attribute changes with valid_from / valid_to and one current row.
Late-arriving facts
Attach a delayed fact to the dimension version effective on the event date, not load date.
Expand-contract schema migration
Finish a half-applied address split without losing rows or locking the table badly.
RFC 4180 CSV import
Load a CSV with quoted commas and mixed encodings without dropping fields.
Money to minor units
Normalize mixed money strings to integer minor units plus ISO currency.
Overlapping page dedup
Idempotent load when retried API pages overlap on source_id.
Timestamps to UTC
Parse mixed timestamps to timestamptz UTC; quarantine invalid values.
Incremental upsert and deletes
Apply inserts, updates, and deletes from a CDC-style extract without duplicating unchanged rows.
Idempotent retries
Bounded retries with jitter for transient writer failures; do not double-write.
Poison-row quarantine
Commit good rows in a batch; isolate poison rows to a dead letter.
Stream a large CSV
Load a large CSV under the memory cap without a full in-memory frame.
Schema drift
Absorb an additive column and a type change without dropping day-1 rows.
Checkpoint after commit
Resume from the last successful checkpoint; never skip uncommitted work.
Paginated orders API
Walk every page or cursor until the API is exhausted; dedupe overlaps.
Idempotent asset upsert
One row per content checksum; filenames are aliases.
Expired token refresh
On 401, refresh the access token (RFC 6749) and retry the failed request once.
HTTP 429 backoff
Honor Retry-After on 429; do not drop the page.
Webhook at-least-once
Verify the signature and dedupe on event.id so replays do not double-apply payments.
Partial API outage
Retry the failing resource without redoing the healthy one.
Incremental sync with clock skew
updated_since with a lookback so boundary rows are not lost; apply tombstones.
New required API field
Continue the load after the API adds a required field mid-pagination.
Gap backfill
Detect missing ids in a monotonic stream and fetch only those ranges.
API vs warehouse reconcile
Explain and fix variance against the API summary (timezone cuts and soft deletes).