Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Data & Analytics

Lakehouse with Medallion Layers and Data Quality Reports

A small lakehouse for a real public dataset, such as city taxi trips, with bronze, silver and gold layers, open table formats and automated data quality reports. A data engineering final year project that shows partitioning, idempotent Spark jobs, late corrections and measurable data quality.

Difficulty

Intermediate

A small team, or one strong student willing to learn something new.
Effort

1 semester · 1 to 2 students

Deliverables

6 to ship

3 optional extras

Suggested stack

PythonPySparkDelta Lake or Apache IcebergParquetDuckDBGreat Expectations or Soda CoreMinIO or cloud object storage
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • A bronze layer of raw files stored exactly as downloaded, with a documented folder and partition layout
  • PySpark jobs that build deduplicated, typed silver tables and a quarantine table recording each rejected row and the reason
  • Two or three gold tables for named business questions, with partitioning and file sizing justified in writing
  • Automated data quality checks on every layer (row counts, nulls, ranges, uniqueness, referential checks) with results stored as a table and shown in a report
  • Working demonstrations of MERGE for late corrections, schema evolution when a column appears, and time travel between versions
  • A report on data quality findings in the source, file sizes and query times before and after compaction, and running cost

If you have time left

  • Query the same tables from a second engine such as DuckDB or Trino and compare results and speed
  • A scheduled compaction and snapshot expiry job with its effect on file count and query time measured
  • Mask or pseudonymise any personal fields and document the approach and its limits

The problem with messy data at scale

Real datasets arrive messy: duplicate records, timestamps in the wrong time zone, trips with negative distances, and schemas that change from one month to the next. Most student projects clean a single CSV by hand in a notebook, and the cleaning cannot be rerun, audited or trusted. Companies of every size face the same thing with sales, sensor and app data, and the teams that cope are the ones who store raw data untouched, clean it in repeatable steps and measure quality every time.

The medallion pattern (bronze for raw, silver for cleaned, gold for business-ready) is now the common vocabulary for this, and it is a skill junior data engineers are expected to explain.

What already exists and the gap

  • Databricks popularised the lakehouse and medallion layers on Delta Lake, with a free edition for learning.
  • Snowflake and BigQuery offer managed warehouses that now read open table formats such as Iceberg.
  • Great Expectations and Soda Core are open source tools for writing data quality checks as code.
  • dbt is often used for the transformation layer on top of a warehouse.

The platforms are mature, and managed ones hide the interesting decisions. The gap for a student is a lakehouse built from open parts where every decision is visible: why this partition key, why this file size, why this row went to quarantine. That is also what a small company without a Databricks budget needs: an open, cheap setup that someone can maintain.

What you build

Pick one public dataset that updates monthly and has known issues. City taxi or ride trip records are a good fit; public transport, air quality or procurement data also work.

  • Bronze: raw files exactly as downloaded, partitioned by source period, never edited.
  • Silver: PySpark jobs that produce typed Delta or Iceberg tables, deduplicated with a deterministic rule, with rejected rows written to a quarantine table and a reason code.
  • Gold: tables for two or three questions, for example trips and revenue per zone per day, or average trip time by hour and weekday.
  • Quality checks: row counts, nulls, ranges, uniqueness and referential checks on each layer, stored as a results table and rendered as a report after every run.
  • Table format features: MERGE for late corrections, schema evolution when a new month adds a column, and time travel to compare versions.

The technically interesting part

The hard part is making the pipeline idempotent and explainable at the same time. Rerunning March must produce the same silver table, not a second copy of March, which means MERGE on a deterministic key rather than append. Every rejected row needs a reason code so you can say "2 percent of rows failed the distance check, mostly in one month". Then there is the small files problem: partition too finely and a query opens thousands of tiny Parquet files; too coarsely and it scans everything. Show your supervisor measurements for at least two layouts and explain the choice.

How to evaluate it

  • Quality findings: a table of every rule, how many rows failed per month, and what you think caused it.
  • Idempotency: run each job three times and prove the row counts and checksums are identical.
  • Performance: file count, average file size and query time for your gold queries before and after compaction and repartitioning.
  • Correction: apply a late correction file and show the gold numbers change exactly where expected, with time travel for the before and after.
  • Cost: hours of compute and storage used, and the monthly cost if it ran on a small cloud setup.

Suggested plan

  1. Weeks 1 to 2: choose the dataset, profile it, design the folder and table layout.
  2. Weeks 3 to 5: bronze ingestion and silver jobs with quarantine.
  3. Weeks 6 to 8: gold tables and the quality check framework.
  4. Weeks 9 to 11: MERGE, schema evolution, time travel, compaction experiments.
  5. Weeks 12 to 15: report, cost estimate, demo.

Path to a product

For most students this is a portfolio piece for data engineering roles. It can also become a reusable open source starter ("a medallion lakehouse on open formats with quality reports built in"), or a consulting offer to small companies that have outgrown spreadsheets but cannot justify a managed platform. A realistic first client is a logistics or retail business with monthly exports and no data team; you would charge for setup and a monthly support retainer.

Scope warning

Do not build a dashboard product, a machine learning model or a custom orchestration system. Do not try several datasets. Use openly licensed data and run on a laptop, a free notebook environment or small cloud resources with auto-termination. Document every quality rule and why it exists.

Learn what you need on Sefism

Get help with this idea

The trap is building layers without ever measuring quality or performance. Tauseef can help you choose a dataset with enough real problems, keep the scope finishable, and design the evaluation. If you are new here, create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.