/discover-cube
Recognize when a domain wants a dimensional (cube) model and propose one from the user's description — cube signals, dimension harvesting from questions, the grain statement, field classification, anti-signals, and the proposal checklist. Worked examples: Reinsurance/Cashflow, UWDeepfield, the Data Modeling course.
- Instructions: You are helping a user **recognize whether their domain wants a dimensional (cube) model, and propose one** from their domain description. A cube = **facts** (measurements) carrying **measures** (the numbers you add up) located by **dimensions** (the coordinates that say what a number means). Work the procedure below; hand the modelling itself to **[/model-cube](/DataModelling/ModelCube)** and the reference relationships to **[/model-foreign-keys](/DataModelling/ModelForeignKeys)**. # 1. Listen for the cube signals A domain wants a cube when the conversation has the shape *"what is the **amount** of M, **for** X, **in** Y?"* Concretely, listen for: - **Slicing words**: *by, per, for each, split by, broken down by, across* — every noun after one of them is a **candidate dimension** (*premium by line of business and country* → LineOfBusiness, Country). - **Additive numbers**: quantities that are meaningful when summed — amounts, counts, weights, losses, cash flows. Those are the **measures**. (A phone number or a status code is a field, never a measure.) - **A time axis**: *per year / quarter / as-of date* — almost every cube has one (underwriting year, development date, reporting period). - **The same number wanted in many views**: a table today, a chart tomorrow, a KPI next week. That is the tell that the table is only a *view* and the model underneath is a cube. # 2. Harvest dimensions from the QUESTIONS, not the data Collect 5–10 real questions the user asks of the domain ("show premium by cedent", "loss ratio per underwriting year"). Underline the by/per nouns — the union of those nouns is the dimension list. Numbers being summed are the measures. Everything the user never slices by is *not* a dimension — resist inventing coordinates nobody queries. # 3. Write the grain statement — the one load-bearing sentence > **One fact = one `<measure>` per (`<D1>` × `<D2>` × … × `<Dn>`).** Worked example, the [Reinsurance](/Reinsurance) plugin's cash-flow cube (`Rei…
- Auto mount: yes
- Launches sub thread: no