Field note · February 8, 2026
Deliberately messy customers, in one paragraph
A thousand customer records broken in every way real data is broken: five date formats, inconsistent casing, padded whitespace, near-duplicate rows, mixed units, sentinel nulls, and encoding damage..
dirty-customers in one paragraph, for anyone deciding whether it is worth downloading.
1,000 rows, 8 columns, one row per customer record, duplicates included. A thousand customer records broken in every way real data is broken: five date formats, inconsistent casing, padded whitespace, near-duplicate rows, mixed units, sentinel nulls, and encoding damage.
Every dataset here is synthetic, which is a deliberate trade. It costs realism and buys three things: we can ship it CC0 with no licence trap, we can bake in the exact quirk a lesson needs, and nobody's real records end up in a tutorial.
Something to try: Write a parser that handles all five date formats without silently coercing. The SQL playground has it loaded already, and the data explorer will profile every column in one pass if you would rather look before you query.
select *
from dirty_customers
limit 20;The file is generated from a fixed seed, so the CSV you download today is byte-identical to the one from last year. That matters more than it sounds: it means a lesson can say "row 412 is the interesting one" and still be right in eighteen months.
Download it, break it, keep it. CC0 — no attribution required, no account, no email.