PHPMem v2.0.1

Version
1.6.45
Uptime
15 days 20 hours 20 minutes 34 seconds

Memory

Total
512MB
Used
9,38MB (1.83%)
Free
502,62MB

Keys

Current
11 436
Total (since start)
35 066
Evictions
0
Reclaimed
738
Expired Unfetched
0
Evicted Unfetched
0

Connections

Current
7 / 1 024 max
Total
179 576
Rejected
0
llm:7b5a6c87d16670964fc5d18bb90bd2b2c1a3142e230a92452285e40f755352e9
TTL 6 days 10 hours 4 minutes 28 seconds Size 2,96KB Export
Edit
Yes. **Court surface is the most natural segmentation**, and it separates the records cleanly. A few other groupings are worth layering on top. **1. Surface (strongest segment)** The main fact tables have a 4-value `Surface` column: Hard, Clay, Grass and Carpet. In `raw.raw_kaggle` the segments differ a lot in size and in playing profile (the rendered surface tables from the queries show all of this): | Surface | Rows | Avg aces | Avg double faults | Avg total points | Avg player rank | |---|---|---|---|---|---| | Hard | 117,571 | ~5.9 | ~2.97 | ~149 | ~311 | | Clay | 107,650 | ~3.4 | ~2.81 | ~147 | ~361 | | Grass | 9,479 | ~7.6 | ~3.17 | ~168 | ~151 | | Carpet | 2,477 | ~7.9 | ~3.11 | ~146 | ~517 | - **Hard and clay** make up almost all the data. Grass and carpet are small segments, and carpet looks like a legacy surface. - **Clay is the low-ace surface**, at roughly half the aces of hard and about 40% of the grass and carpet averages. - **Grass is the fast surface with the longest matches.** It has high aces, the most double faults, and the most total points per match (~168). - **Grass draws a stronger field.** Its average rank is ~151, against 311 on hard and 361 on clay (lower means better). Some of the surface differences may therefore reflect who plays there, not just the court. - **28 rows have no surface recorded.** Keep them as an "unknown" bucket or exclude them. The same `Surface` split exists in the serve and return tables, and the gold tables `*_by_Surface` already aggregate it. **2. Other natural groupings** (from the dataset card; I did not profile these in this turn) - **Round (`Rd`, ~14 values):** early rounds versus deep rounds, to see how form changes as a tournament progresses. - **Tournament (~3,963 distinct values):** too fine-grained to use directly. Group it into tournament level or tournament × surface, which the gold tables `*_by_Tournament_Surface` already provide. - **Player rank bands (`Rk` / `vRk`):** these are continuous, with ranks from 1 to about 2,250. Bucket them, for example into top 10, top 100 and the rest, to compare profiles against stronger or weaker opponents. The `return_kaggle_by_Rk*` gold tables do this. - **Break-point situations (`Bpsvd`, `BPCnv`):** serve and return behaviour under pressure. - **Time (`Date` / year):** era-based segments, because the data spans 2006 or 2013 to 2024 depending on the table. - **Player (`Name`):** a per-player entity grouping, with `raw.players_man_` and `raw.players_tournament_man_` as dimension tables. **Caveat:** the tables have no verified join keys, so each segmentation has to be done within a single table. `Surface`, `Rd` and `Tournament` are shared by name across the three match fact tables, but I have not verified that their rows line up. **Recommendation:** segment first by Surface, then by Round or rank band. Treat Grass and Carpet as small-sample groups.