Transaction-level sales records — one row per line item sold. Grain: sale × product.
| Column | Type | Description |
| SalesIDPK | TEXT | Unique transaction line identifier (T0000001…) |
| DateFK | DATE | Sale date → DimDate[Date] |
| StoreIDFK | TEXT | Store where sale occurred → DimStore[StoreID] |
| ProductIDFK | TEXT | Product sold → DimProduct[ProductID] |
| EmployeeIDFK | TEXT | Sales associate who made the sale → DimEmployee[EmployeeID] |
| Quantity | INTEGER | Units sold (1–5, weighted toward 1) |
| Discount | DECIMAL | Applied discount rate (0, 0.05, 0.10, or 0.20) |
| Revenue | DECIMAL | Net revenue after discount (₺) |
| Cost | DECIMAL | Product cost for units sold (₺) |
| Profit | DECIMAL | Revenue − Cost (₺) |
Monthly performance metrics per employee. Grain: employee × month. Covers SalesAssociate and StoreManager roles only.
| Column | Type | Description |
| PerformanceIDPK | TEXT | Unique performance record identifier |
| EmployeeIDFK | TEXT | Employee being measured → DimEmployee[EmployeeID] |
| MonthFK | DATE | First day of the month → DimDate[Date] |
| SalesTarget | INTEGER | Monthly sales target assigned (₺80K–150K) |
| SalesActual | INTEGER | Actual sales achieved that month |
| PerformanceScore | DECIMAL | Score on 0.0–5.0 scale (actual ÷ target × 5, capped) |
Employee master data with self-referencing hierarchy (ManagerID). Critical for hierarchical RLS via PATH() & PATHCONTAINS().
| Column | Type | Description |
| EmployeeIDPK | TEXT | Unique employee identifier (E0001…E0201) |
| FullName | TEXT | Employee full name |
| Email | TEXT | Corporate email — matches USERPRINCIPALNAME() for RLS |
| Role | TEXT | GM · RegionDirector · CityManager · StoreManager · SalesAssociate · HR · Finance |
| ManagerID | TEXT | Direct manager (self-reference to EmployeeID). Empty for GM. |
| StoreIDFK | TEXT | Assigned store (empty for HR, Finance, GM) |
| CityID | TEXT | Assigned city |
| RegionID | TEXT | Assigned region |
| Salary | INTEGER | Annual salary (₺). Hidden from Finance role via OLS. |
| HireDate | DATE | Employment start date |
| ManagerPathCALC | TEXT | DAX-computed pipe-delimited hierarchy path (e.g. "E0001|E0005|E0023") |
| HierarchyLevelCALC | INTEGER | Depth in org tree (1 = GM, 5 = Sales Associate) |
| ManagerNameCALC | TEXT | Full name of direct manager (LOOKUPVALUE) |
Store master data with geographic hierarchy (city → region).
| Column | Type | Description |
| StoreIDPK | TEXT | Unique store code (S001…S034) |
| StoreName | TEXT | Store display name (e.g. "İstanbul Park", "Ankara AVM") |
| CityIDFK | TEXT | City reference → DimCity[CityID] |
| CityName | TEXT | Denormalized city name |
| RegionID | TEXT | Denormalized region reference |
| RegionName | TEXT | Denormalized region name |
| OpenDate | DATE | Store opening date (2018–2023) |
Cities where NovaRetail operates.
| Column | Type | Description |
| CityIDPK | TEXT | City code (C01…C09) |
| CityName | TEXT | İstanbul, Bursa, Kocaeli, Ankara, Konya, Kayseri, İzmir, Aydın, Muğla |
| RegionIDFK | TEXT | Parent region → DimRegion[RegionID] |
Top-level geographic grouping.
| Column | Type | Description |
| RegionIDPK | TEXT | Region code (R01, R02, R03) |
| RegionName | TEXT | Marmara · İç Anadolu · Ege |
Product catalog across 4 categories × 4 brands.
| Column | Type | Description |
| ProductIDPK | TEXT | SKU identifier (P0001…P0133) |
| ProductName | TEXT | Human-readable product name |
| Category | TEXT | Giyim · Ayakkabı · Aksesuar · Ev Tekstili |
| SubCategory | TEXT | Detailed sub-category (Tişört, Elbise, Spor, etc.) |
| Brand | TEXT | NovaBasic · NovaSport · NovaPremium · NovaKids |
| UnitPrice | DECIMAL | List price per unit (₺80–1,200) |
| UnitCost | DECIMAL | Cost per unit (55–75% of price) |
Standard date dimension for time intelligence. Marked as Date table.
| Column | Type | Description |
| DatePK | DATE | Calendar date (2024-01-01 to 2025-12-31) |
| Year | INTEGER | Calendar year |
| Quarter | TEXT | Q1–Q4 |
| Month | INTEGER | Month number (1–12) |
| MonthName | TEXT | January…December |
| Day | INTEGER | Day of month (1–31) |
| DayOfWeek | TEXT | Monday…Sunday |
| IsWeekend | BOOLEAN | TRUE if Saturday or Sunday |
RLS lookup table. Isolated — no relationships to other tables. Filtered exclusively via DAX using USERPRINCIPALNAME().
| Column | Type | Description |
| EmailPK | TEXT | User email — matches USERPRINCIPALNAME() at runtime |
| EmployeeID | TEXT | Links to DimEmployee (via DAX, not model relationship) |
| FullName | TEXT | Denormalized for debug display |
| Role | TEXT | Determines which RLS role applies |
| RegionID | TEXT | User's access scope — region level |
| CityID | TEXT | User's access scope — city level |
| StoreID | TEXT | User's access scope — store level |