01Why raw data can't be trusted
Field data is produced by people and devices under pressure: enumerators typing prices on a phone at a busy market, sensors dropping packets, spreadsheets merged by hand. Every one of those steps introduces a characteristic kind of error, and a data engineer's first job is to name them before fixing anything:
| Error type | Example in the market-price data | What it breaks |
|---|---|---|
| Missing values | price_ugx is blank | averages, model training |
| Invalid domain | price_ugx = -1500, rainfall_mm = 900 | every aggregate that touches it |
| Inconsistent format | "owino ", "OWINO", "Owino" | joins and group-bys silently split one market into three |
| Duplicates | the same (date, market, commodity) row submitted twice | sums and counts are inflated |
| Unparseable values | date = "bad-date" | time-series logic crashes or drops rows |
The point of the table is that each error type has a different fix. Treating them all as "dirty data, drop it" throws away information and hides the real problem from whoever produced the data.