PHPMem v2.0.1
Version
1.6.45
Uptime
15 days 9 hours 59 minutes 2 seconds
Memory
Total
512MB
Used
24,01MB (4.69%)
Free
487,99MB
Keys
Current
27 649
Total (since start)
33 978
Evictions
0
Reclaimed
161
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
12 / 1 024 max
Total
171 077
Rejected
0
llm:df0f187ff95b34f3f1aae2e86aa56c5866f1651c82d923544235459106b166e9
Edit
Column roles split into four groups. The profiler's labels are sometimes wrong, so I note where I've overridden them. The five tables share no detected join key, so each is classified on its own.
## 1. Identifiers and keys
No single column is unique. Identity comes from composite keys.
- **`raw_kaggle`, `return_kaggle`, `serve_kaggle`:** one row per player per match, keyed on `Name` + `Date` + `Tournament` + `Rd`. The serve table spells the tournament column `Tournment`.
- **`players_tournament_man_`:** keyed on `name` + `year` + `tournament`.
- **`players_man_`:** keyed on `name`.
- **Ingestion metadata in `raw_kaggle`:** `_ingestion_timestamp`, `_batch_id`, `_source_file` and `_source_system` each have one distinct value. They are lineage fields with no analytical use. I only inspected `raw_kaggle`, so I can't say whether the other tables carry them.
- **`against` (opponent text):** it has about 252,129 distinct values in `raw_kaggle`, so it behaves like a free-text label rather than a dimension. In `return_kaggle` it is tagged categorical with about 1 distinct value, so the two tables differ.
## 2. Categorical dimensions
- **Low cardinality:** `Surface` (about 4 values) and `Rd`, the round (about 14 values). Both appear in all three match tables. `players_tournament_man_.rounds` is also a round label, but has about 131 distinct values.
- **High cardinality:** `Tournament` / `Tournment` (about 3,963 distinct values, because editions and qualifiers are separate strings) and `players_tournament_man_.tournament` (about 362).
- **Free text:** `Score` has about 10,386 distinct values, including `Walkover` and ` ` artifacts.
- **Break-point bucket labels:** `return_kaggle.BPCnv` (about 223 distinct) and `serve_kaggle.Bpsvd` (about 236). They look like "converted/opportunities" strings, which I inferred from the names and did not check in the values.
## 3. Numeric metrics
- **Stored as numbers (`DOUBLE`):**
- In `raw_kaggle`: `Rk` and `vRk` (player and opponent ranking), `TP` (total points), `SP` (service points), `1SP`, `2SP`, `Aces`, `DFs` and `vA` (opponent aces).
- In `return_kaggle` and `serve_kaggle`: `Rk` and `vRk`.
- **Stored as integers (`BIGINT`):** `players_man_.number_of_matches`.
- **Numeric but stored as text (`VARCHAR`):** the profiler tags most of these as "classifier", which is misleading.
- Return stats: `TPW`, `RPW`, `vA%`, `v1st%`, `v2nd%` and `DR`.
- Serve stats: `A%`, `1stIn`, `1st%`, `2nd%`, `Df%` and `Dr`.
- These are percentages or ratios and need to be cast before use. I inferred this from the column names and did not inspect the values.
- **Missing data:** in `raw_kaggle`, `TP`, `SP`, `Aces`, `DFs`, `1SP`, `2SP` and `vA` are each null in 86,793 of 237,205 rows. `Rk` is null in 4,388 rows and `vRk` in 10,390.
## 4. Dates and times
- **`Date` and `Time` (all three match tables):** both are `VARCHAR`, not real date types.
- `Date` values look like `1-Apr-2013`, and some use a non-standard hyphen, as in `9‑Sep‑2024`. They need cleaning before parsing.
- `raw_kaggle` and `return_kaggle` run from April 2013 to September 2024. `serve_kaggle` starts in April 2006.
- `Time` has about 347 distinct values.
- **`players_tournament_man_.year`:** a `BIGINT` ranging from 2002 to 2024.
- **`players_man_.playing_years`:** a `VARCHAR` holding a list-like string of years, such as `[2002, 2005, …, 2024]`.