A portfolio-ready data analytics project that converts anonymized higher-education data into validated analytics marts, a SQLite warehouse, and Tableau-ready datasets.
Build a reproducible ETL pipeline that helps education stakeholders analyze:
- student pass, distinction, fail, and withdrawal outcomes;
- assessment scores and completion rates;
- early, on-time, and late submissions;
- performance differences across modules, presentations, and student segments.
The project uses selected tables from the Open University Learning Analytics Dataset (OULAD). The complete dataset contains course, student, assessment, registration, and virtual-learning-environment data for more than 30,000 students. This mini project excludes the 432 MB VLE clickstream table and focuses on academic outcomes and assessments.
Raw tables used:
| Table | Grain | Purpose |
|---|---|---|
studentInfo.csv |
Student-course presentation | Demographics and final outcome |
studentRegistration.csv |
Student-course presentation | Registration and withdrawal timing |
courses.csv |
Course presentation | Course duration |
assessments.csv |
Assessment | Assessment type, due day, and weight |
studentAssessment.csv |
Student assessment submission | Score and submission timing |
OULAD CSV files
|
v
Extract and schema validation
|
v
Cleaning and standardization
|
+--> Assessment submission mart
|
+--> Student-course summary mart
|
v
SQLite analytics warehouse
|
v
Tableau dashboards
- Validates required files and columns before processing.
- Standardizes text fields and data types.
- Converts relative registration, withdrawal, due, and submission dates to nullable integers.
- Preserves unknown values instead of inventing dates or scores.
- Joins submissions to assessment, course, and student records with relationship validation.
- Creates pass, distinction, fail, and withdrawal flags.
- Calculates completion rate, average and weighted scores, on-time rate, lateness, and engagement bands.
- Runs duplicate-key, score-range, completion-rate, and outcome consistency checks.
- Loads curated data into indexed SQLite tables.
student-analytics-etl-tableau/
├── data/
│ ├── raw/ # Source CSVs and attribution
│ ├── processed/ # Tableau-ready analytics marts
│ └── warehouse/ # SQLite database
├── dashboard/ # Tableau calculations and build steps
├── docs/ # Data dictionary and business rules
├── reports/ # Automated data-quality results
├── sql/ # Portfolio-ready analysis queries
├── src/ # Python ETL pipeline
├── tests/ # Data tests
├── .github/workflows/ci.yml # Automated pipeline and tests
├── requirements.txt
├── run_pipeline.bat
└── run_pipeline.sh
python -m venv .venvWindows:
.venv\Scripts\activate
pip install -r requirements.txt
python -m src.etl_pipeline
pytestmacOS/Linux:
source .venv/bin/activate
pip install -r requirements.txt
python -m src.etl_pipeline
pytestdata/processed/tableau_student_course_summary.csv: one row per student-course presentation.data/processed/tableau_assessment_detail.csv: one row per student assessment submission.data/warehouse/student_analytics.db: SQLite warehouse with two dimensions and two fact tables.reports/data_quality_report.json: machine-readable validation results.- Small sample outputs are committed for quick review; full generated marts and the database are ignored by Git and rebuilt locally.
- Student Success Overview — KPIs, course outcomes, trends, demographics, and completion-versus-score analysis.
- Assessment Performance — submission timing, score distributions, assessment types, and lateness analysis.
These Tableau dashboard pages were created from the processed project data and provide recruiter-friendly views of the project scope, student outcomes, and assessment performance.
Project home page summarizing the analytics workflow, dataset, dashboard scope, and source data used.
Student success overview covering enrollments, outcomes by module, pass-rate trends, education and engagement segments, and completion versus average score.
Assessment performance view covering submission totals and timing, score distributions, average scores by assessment type, and timing patterns.
The source dataset is anonymized. Dashboard findings describe historical patterns and should not be used as the sole basis for decisions about individual students. Missing demographic and assessment values are retained and documented rather than guessed.
Kuzilek, J., Hlosta, M., & Zdrahal, Z. (2017). Open University Learning Analytics dataset. Scientific Data, 4, 170171. Dataset licensed under CC BY 4.0.


