The question
How can separate sales and customer files become a reliable regional report without silently losing rows, duplicating transactions, or changing the revenue total?
Data and scope
The supplied sample contains 48 sales rows and 12 customers. The point is not scale; it is the design of a repeatable pipeline with explicit failure conditions and inspectable outputs.
| Control | Verified result |
|---|---|
| Input sales rows | 48 |
| Customer records | 12 |
| Revenue before transformation | $7,816.00 |
| Revenue in final output | $7,816.00 |
| Pipeline checks | 8 passed |
| Unit tests | 4 passed |
What I built
- Schema and type checks for both input files.
- Duplicate, null, range, and referential-integrity checks before the join.
- A clean join and aggregation path for reporting by region and product category.
- Saved outputs plus automated tests for expected behavior and reconciliation.
One limitation and the next build
The current files do not include enough time-series depth for seasonality or forecasting. A production extension would add orchestration, logging, incremental loads, data contracts, and dashboard delivery.