Projekt z przedmiotu Wielowymiarowa Analiza Danych realizujący pełen cykl Business Intelligence: od plików źródłowych, przez ETL i hurtownię danych, aż po kostkę OLAP, KPI, Data Mining i wizualizacje w Power BI.
- Cel projektu
- Opis danych
- Architektura rozwiązania
- Stack technologiczny
- Struktura hurtowni
- Procesy ETL
- Kostka OLAP
- KPI
- Data Mining
- Wizualizacje Power BI
- Uruchomienie
- Struktura repozytorium
Celem projektu jest przeprowadzenie pełnej analizy wielowymiarowej na zestawie 1 000 000 wierszy danych dotyczących przestępczości w Chicago. Projekt obejmuje:
- przygotowanie i wczytanie danych do hurtowni (ETL)
- modelowanie wielowymiarowe (schemat gwiazdy)
- budowę kostki OLAP z miarami obliczanymi (MDX) i wskaźnikami KPI
- analizy Data Mining (klasyfikacja, klastrowanie, predykcja)
- raportowanie i wizualizację wyników w Power BI
Zestaw danych pochodzi z otwartego portalu City of Chicago Data Portal:
Dane są aktualizowane codziennie i obejmują wszystkie zgłoszone przestępstwa w Chicago od 2001 roku (z wyjątkiem zabójstw, które są raportowane na poziomie ofiary). Dla potrzeb projektu wczytano próbkę 1 000 000 wierszy. Każdy wiersz to pojedynczy incydent z informacjami o:
- ID, CaseNumber, Date — identyfikacja i czas zdarzenia
- PrimaryType, Description, IUCR, FBICode — klasyfikacja przestępstwa
- District, Ward, CommunityArea — lokalizacja administracyjna
- Latitude, Longitude — współrzędne geograficzne
- LocationDescription — typ miejsca (street, residence, apartment...)
- Arrest, Domestic — flagi BIT (czy zakończyło się aresztem, czy to przemoc domowa)
[CSV Chicago Crime]
│
▼
[SSIS / Integration Services] ◄── 5 przepływów ETL
│
▼
[ChicagoCrime_DW] ◄── Hurtownia (schemat gwiazdy)
│ FactCrime + 4 wymiary
▼
[SSAS — Kostka OLAP] ◄── Wielowymiarowy projekt Analysis Services
│ miary, calculations (MDX), KPI, hierarchie
├──► [Data Mining Models] Drzewa, sieci neuronowe, klastrowanie
│
▼
[Power BI Desktop] ◄── Raporty z slicerami i KPI
| Warstwa | Narzędzie |
|---|---|
| Bazy / hurtownia | Microsoft SQL Server |
| ETL | SQL Server Integration Services (SSIS) |
| OLAP & Data Mining | SQL Server Analysis Services (SSAS) — Multidimensional |
| Język zapytań kostki | MDX |
| Wizualizacja | Power BI Desktop |
| IDE | Visual Studio z dodatkami SSDT |
Schemat gwiazdy zbudowany wokół tabeli faktów FactCrime z 1 mln wierszy i 4 wymiarów:
┌──────────────┐
│ DimDate │
│ DateKey PK │
│ FullDate │
│ Year, Month │
│ Quarter, Day│
└──────┬───────┘
│
┌───────────────┐ │ ┌──────────────────┐
│ DimCrimeType │ │ │ DimLocationType │
│ CrimeTypeKey │◄──────┼──────►│ LocationTypeKey │
│ PrimaryType │ ┌───┴───┐ │ LocationDesc. │
│ IUCR, FBICode │◄──┤Fact ├──►└──────────────────┘
│ Description │ │Crime │
└───────────────┘ │ │ ┌──────────────────┐
│ 1M │ │ DimLocation │
│ rows ├──►│ LocationKey │
└───────┘ │ District, Ward │
│ CommunityArea │
│ Lat, Long │
└──────────────────┘
Tabela faktów FactCrime:
CrimeKey(PK)DateKey,CrimeTypeKey,LocationKey,LocationTypeKey(FK)CrimeID,CaseNumberArrest,Domestic(BIT)
W projekcie SSIS zaimplementowano 5 przepływów ETL, które:
- Pobierają dane z plików źródłowych (Flat File Source)
- Sortują i scalają strumienie (Sort, Merge)
- Sprawdzają duplikaty (Lookup) — błędne rekordy do tabel błędów
- Wykonują transformacje (Derived Column, Data Conversion)
- Ładują oczyszczone dane do tabel hurtowni (OLE DB Destination)
Wielowymiarowy projekt SSAS CHICAGO_CRIME_OLAP zawiera:
Fact Crime Count— łączna liczba przestępstwArrest— liczba aresztów (SUM poCAST(Arrest AS INT))Domestic— liczba przypadków przemocy domowej (SUM poCAST(Domestic AS INT))
[Arrest Rate]—Arrest / Fact Crime Count * 100[Domestic Rate]—Domestic / Fact Crime Count * 100[Theft Rate]— procentowy udział kradzieży w ogólnej liczbie przestępstw[Daily Crime Average]— średnia dzienna liczba zdarzeń
- DimDate: Year → Quarter → Month → Day
- DimLocation: District → Ward → CommunityArea
- DimCrimeType: FBICode → PrimaryType → Description
W kostce zdefiniowano 5 KPI wykorzystujących wyrażenia KpiValue(), KpiGoal() i CASE WHEN:
| KPI | Cel | Logika statusu |
|---|---|---|
| Arrest Effectiveness | ≥ 15% | więcej = lepiej |
| Domestic Violence Watch | ≤ 20% | mniej = lepiej |
| Crime Volume Annual | ≤ 250 000 | mniej = lepiej |
| Theft Dominance | ≤ 25% | mniej = lepiej |
| Daily Crime Load | ≤ 700 | mniej = lepiej |
Każdy KPI ma trzystopniowy status (Traffic Light): 🔴 / 🟡 / 🟢.
Cztery modele analityczne zbudowane na danych hurtowni:
- Microsoft Decision Trees — predykcja
Arrestna podstawie typu przestępstwa, lokalizacji i czasu - Microsoft Neural Network — klasyfikacja
Domestic - Microsoft Clustering — segmentacja dzielnic według charakterystyki przestępczości
- Microsoft Naive Bayes — dodatkowa klasyfikacja porównawcza
Raporty łączą się z kostką OLAP przez Live Connection do SSAS.
- Raport 1 — KPI: Arrest Effectiveness, Domestic Violence Watch + breakdown po dzielnicach
- Raport 2 — pozostałe KPI + slicery (rok, miesiąc, typ przestępstwa)
- Raport 3 — mapa przestępczości (z latitude/longitude)
- Raport 4 — wyniki Data Mining (predykcje vs rzeczywistość)
- Microsoft SQL Server 2019+ z włączoną instancją Analysis Services (Multidimensional)
- Visual Studio 2019/2022 z dodatkami SSDT (SQL Server Data Tools)
- Power BI Desktop
- Sklonuj to repozytorium
- Odtwórz hurtownię z pliku
database/ChicagoCrime_DW.bak - Otwórz solucję
WAD_Projekt_<numer>.slnw Visual Studio - W projekcie SSIS — uruchom przepływy ETL (Package.dtsx)
- W projekcie SSAS — Deploy + Process Full kostki
- Otwórz raporty Power BI w pliku
.pbixi odśwież połączenie
chicago-crime-wad/
├── database/
│ └── ChicagoCrime_DW.bak # Backup hurtowni
├── etl/
│ ├── Package.dtsx # 5 przepływów ETL
│ └── data/ # Pliki źródłowe CSV
├── olap/
│ ├── CHICAGO_CRIME_OLAP.sln # Projekt SSAS
│ ├── Cubes/
│ ├── Dimensions/
│ └── DataSourceViews/
├── powerbi/
│ └── ChicagoCrime_Reports.pbix
├── docs/
│ ├── sprawozdanie.pdf # Pełna dokumentacja
│ └── screenshots/
└── README.md
Maciej Gilecki, Wioletta Grabias
Projekt zrealizowany w ramach przedmiotu Wielowymiarowa Analiza Danych, Politechnika Rzeszowska, Wydział Matematyki i Fizyki Stosowanej.
Projekt edukacyjny. Dane Chicago Crime są publicznie dostępne na portalu data.cityofchicago.org i udostępniane przez Chicago Police Department.