Field note · May 22, 2025

What is deliberately wrong with dirty-customers

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..

1 min read ·Data quality ·quality practice

What is deliberately wrong with dirty-customers.

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.

This one is a training dummy, not a report. Nothing in it is trustworthy: signup_date appears as ISO, US, European, and two textual formats; country mixes full names and codes and casing; spend mixes dollars and cents in the same column; missing values appear as blank, NULL, N/A, -, and -999. There are 43 near-duplicate records that differ only by whitespace or casing. Cleaning it end-to-end is the exercise.

Something to try: Find the near-duplicates — exact matching will not do it. 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.

sql
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.