Eine modulare, produktionsnahe Data-Engineering-Architektur zur Simulation eines Kernbanksystems (inspiriert durch OSPlus-Strukturen). Das Projekt implementiert einen automatisierten ETL-Prozess (Extract, Transform, Load), ein relationales SQLite-Data-Warehouse im Backend sowie ein analytisches Business-Intelligence-Reporting-Modul.
Das System trennt die Datenspeicherung, die relationale Abfragelogik und das automatisierte Reporting strikt voneinander:
- Datenbank & Data Warehouse: SQLite (mit relationalem Schema, Primär- und Fremdschlüsselintegrität).
- ETL-Pipeline & Datenverarbeitung: Python mit Pandas und NumPy (synthetische Generierung von Enterprise-Massendaten: 10.000 Konten und 50.000 Transaktionen).
- Analytisches SQL: Modulare Abfragen mit relationalen
JOIN-Operationen und Aggregationsfunktionen (SUM,AVG,COUNT). - Reporting & Visualisierung: Automatisierter Export von strukturierten CSV-Berichten und professionellen Finanzdiagrammen mittels Matplotlib und Seaborn.
- Entwicklungsumgebung: Python Virtual Environment (
venv), Git für die Versionskontrolle.
osplus-reporting-engine/
│
├── data/
│ └── processed/ # Generiertes SQLite Data Warehouse (*.db)
│
├── reports/ # Automatisierte BI-Ergebnisse (CSV & PNG)
│ ├── transaktionen_analyse.csv
│ └── transaktionen_volumen.png
│
├── scripts/
│ └── generate_report.py # ETL-Extraktion und BI-Visualisierungsskript
│
├── sql_queries/ # Isolierte und modulare SQL-Skripte
│ ├── schema.sql # DDL-Definition des relationalen Schemas
│ └── report_transaktionen_analyse.sql # Analytische JOIN-Abfrage
│
├── .gitignore # Ausschluss von venv, Cache und Binärdaten
├── main.py # ETL-Pipeline zur Massendaten-Initalisierung
├── requirements.txt # Projektabhängigkeiten
└── README.md # Projektdokumentation
git clone [https://github.com/dgoo24/osplus-reporting-engine.git](https://github.com/dgoo24/osplus-reporting-engine.git)
cd osplus-reporting-engine
python -m venv venv
.\venv\Scripts\activatepip install -r requirements.txtGeneriert die synthetischen Massendaten (10.000 Konten, 50.000 Transaktionen) und lädt sie in die relationale SQLite-Datenbank:
python main.pyFührt die SQL-Abfrage aus, exportiert die aggregierten Kennzahlen als CSV und erstellt die grafische Auswertung:
python scripts/generate_report.pyDas Reporting basiert auf relationalen Verknüpfungen zwischen Kontestämmen und Transaktionsdaten:
SELECT
k.kontotyp,
COUNT(DISTINCT k.konto_id) AS anzahl_konten,
COUNT(t.transaktion_id) AS gesamt_transaktionen,
ROUND(SUM(t.betrag), 2) AS gesamt_volumen,
ROUND(AVG(t.betrag), 2) AS durchschnittlicher_betrag
FROM konten k
LEFT JOIN transaktionen t ON k.konto_id = t.konto_id
GROUP BY k.kontotyp
ORDER BY gesamt_volumen DESC;