PHPMem v2.0.1
Version
1.6.45
Uptime
15 days 11 hours 11 minutes 19 seconds
Memory
Total
512MB
Used
16,30MB (3.18%)
Free
495,70MB
Keys
Current
19 572
Total (since start)
33 978
Evictions
0
Reclaimed
381
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
8 / 1 024 max
Total
172 504
Rejected
0
llm:302cbf8f4d0b5b813160326e85c576a6c1be8036bfd907afea3a57f309ac58b9
Edit
Below, columns are grouped by what they do in analysis. The profiler's own tags are sometimes wrong, because many numeric columns are stored as text.
**Identifiers and keys**
- The dataset has no surrogate ID column. Rows are identified by composite keys.
- `players_man_.name` is the only fully unique column (uniqueness 1.0), so it is the key of that table.
- `players_tournament_man_` is keyed by `name` + `year` + `tournament`, which the profiler flagged as a primary key.
- The three match tables (`raw_kaggle`, `return_kaggle`, `serve_kaggle`) are one row per player per match. The key is `Name` + `Date` + `Tournament` (spelled `Tournment` in `serve_kaggle`) + `Rd`. This key comes from the ontology's reading of the data and was not checked with a uniqueness query.
- `Name` and `Tournament` in `return_kaggle` are tagged as foreign keys, but the dataset card lists no verified joins. Treat that tag as a weak hint.
- `raw_kaggle.against` has uniqueness 1.0, but it is a free-text opponent string, not a real ID.
- `_ingestion_timestamp`, `_batch_id`, `_source_file` and `_source_system` are load metadata with a single distinct value each. They are not analytical fields.
**Categorical dimensions**
- `Surface` has about 4 values (hard, clay, grass, carpet). It appears in all three match tables.
- `Rd` (round) has about 14 values and also appears in all three match tables.
- `Tournament` / `Tournment` has about 3,963 distinct values, so it is high-cardinality.
- `Score` has about 10,386 distinct values and is closer to free text.
- `against` in `return_kaggle` has about 1 distinct value, so it is effectively constant there. In `serve_kaggle` it is typed as descriptive text.
- `players_tournament_man_.tournament` (about 362 values) and `rounds` (about 131 values) are classifiers.
- `Bpsvd` (serve) and `BPCnv` (return) are break-point saved and converted counts. They look like "x/y" text and are tagged as classifiers, but they are really metrics stored as text.
- `Name` (about 491 distinct in `raw_kaggle`) is the player label.
**Numeric metrics**
- Stored as real numbers in `raw_kaggle`: `Rk`, `vRk` (own and opponent rank), `TP`, `SP`, `1SP`, `2SP`, `Aces`, `DFs` and `vA`.
- `Rk` and `vRk` are also numeric in `return_kaggle` and `serve_kaggle`.
- `players_man_.number_of_matches` is a BIGINT count.
- Stored as text (VARCHAR) but numeric in meaning:
- Return: `DR`, `TPW`, `RPW`, `vA%`, `v1st%` and `v2nd%`.
- Serve: `Dr`, `1st%`, `1stIn`, `2nd%`, `A%` and `Df%`.
- The profiler tags most of these as "classifier", which is misleading. They need stripping and casting (for example removing `%`) before analysis.
- Missing data: the `raw_kaggle` stat columns (`TP`, `SP`, `1SP`, `2SP`, `Aces`, `DFs`, `vA`) are null in about 86,799 of 237,205 rows. `Rk` is null in 4,388 rows and `vRk` in 10,394.
**Dates and times**
- `Date` and `Time` appear in all three match tables, but both are stored as text. The dates look like `1-Apr-2013` and include a non-standard hyphen character (`9‑Sep‑2024`), so parsing will need cleaning.
- The `Time` column is sparse and poorly formed, and its range is reported as "..8:30".
- `players_tournament_man_.year` is a real BIGINT year (2002–2024), so it is the cleanest time field.
- `players_man_.playing_years` is text holding a list of years per player.