Data Analyst / Engineer · Focus area 1: Data pipelines
DT2: Data quality you can prove
Goal: describe data quality in measurable terms, profile a new dataset in minutes, turn cleaning rules into checks that run every time, keep a quarantine with reasons, and prove with counts that no row went missing.
You'll need: DT1, Module 26 (Debugging and Testing), Module 55 (SQL Fundamentals), and the SabziSathi practice kit.
Where this is used: a hospital's bed-occupancy report, a bank's daily risk figures and an online shop's sales dashboard all carry an unwritten promise that the numbers are right. Data quality checks are how that promise is kept and shown.
How it differs: in app testing you check that code does what it should. In data work the code can be right and the data still wrong, because it arrives from outside. So you test the data itself, every time it arrives.
Time: reading about 2 hours · practice (the Try it tasks) about 2½ hours · assignment about 3 hours.
Lessons
- 1What "good data" meansReading 15–25 minutes, plus practice✓
- 2Profiling a new datasetReading 15–25 minutes, plus practice✓
- 3Validation rules and quarantineReading 15–25 minutes, plus practice✓
- 4Counts that add upReading 15–25 minutes, plus practice✓
- 5Testing data codeReading 15–25 minutes, plus practice✓
🛠️Assignment: Checks for SabziSathi's orders
This is the second part of Project 1.
- Profile all 30 raw order files and the customer file, and add the profile to
docs/raw-notes.md. - Write the row rules and table rules from your notes, each with the action it takes (quarantine, leave out and count, or stop).
- Add the
clean.quarantinetable and fill it from your rules. - Add the
ops.load_logtable with the counts of every run, and make a load fail if its counts don't add up. - Write
tests/test_clean.pywith unit tests for your three cleaning functions, using awkward values from the profile.
Self-check before you finish:
- [ ] Every rule has a number or a list of allowed values.
- [ ] Each quarantined row has a reason and its original values.
- [ ] The reconciliation holds for every day in the load log.
- [ ] One total is checked against an independent calculation.
- [ ]
pytest tests/test_pipeline.pytests 6 and 7 pass.
✅Module check
Explain in a few sentences, in your own words:
How do you show someone that a dataset can be trusted?
Show a good answer
A good answer mentions: measurable checks for completeness, validity, uniqueness, consistency, timeliness and accuracy; a profile of the raw data; row and table rules with a clear action for each failure; a quarantine table with reasons and an owner; a reconciliation that accounts for every row; a total compared with an independent source; a load log; and automated tests with independently computed expected numbers.
📚Official references
Official documentation and guidance for this module's topics, chosen on 2 November 2026. Tools, laws and standards change, so check the current version before you rely on a detail. If a link has moved, search the same site.
📝Module quiz
10 questions · 10 marks each · 100 marks in all · pass mark 70% · retry as often as you like ·
