Schema designer
Writing a Mondrian cube by hand means declaring fact tables, dimensions, hierarchies, levels, foreign-key joins, measures and aggregations in XML. Several hundred lines for a modest cube, and most of it mechanical. Saiku Cloud gives you two ways not to.
Draw it. The visual canvas is a full cube designer — tables, joins, measure groups, dimensions and hierarchies, calculated measures, time calculations. Deterministic and precise; nothing is guessed on your behalf.
Describe it. Point the AI draft at a data source, say what you want in a sentence, and get back a complete proposal to edit and save.
Both write the same Mondrian XML, both save into the same catalog, and you can start on one and finish on the other.
The visual canvas
New schema on the Schemas page opens the canvas. Four tabs run left to right in the order you’d naturally work:
| Tab | What you do there |
|---|---|
| Schema Canvas | Pick a warehouse and lay tables out. Joins between them are the cube’s skeleton. |
| Dimensions & Hierarchies | Turn tables into dimensions; stack levels into hierarchies; set level types. |
| Facts & Measures | Group measures, choose aggregators, and add calculated measures like Profit = [Sales] − [Cost]. |
| Confirm cube | Validation before you commit. |
An Inspector drawer runs along the bottom, with a Properties
form and a </Code> view of the XML being generated. It docks
to the right if you’d rather work side by side.
Two things worth knowing early:
- Time calculations (YoY, PoP, YTD, rolling) need a Time
dimension with a
Yearslevel. Set level types on the hierarchy first, or the calculation has nothing to walk. - Drafts are local. The save-draft button keeps an unfinished cube in your browser so you can leave and come back. It appears in the catalog marked as a draft, and it isn’t on our servers until you save properly.
Import / Export / Reset in the toolbar moves definitions in and out — useful for moving a cube between tenants, or for keeping the canvas JSON in version control alongside your dbt models.
The AI draft
-
Pick a data source. Any saved warehouse connection, or an uploaded file.
-
Pick a fact table — the table whose numbers you want to count, sum or average. We profile the schema first (cheap; it’s metadata plus a handful of sample rows) and list what’s there. Likely aggregate tables —
agg_*,*_summary,*_rollup— get pushed to the bottom, so the canonical base-grain fact wins instead of being buried under thirty pre-aggregations. The search box takesinclude:andremove:filters. -
Describe what you want. One sentence does it: “Sales facts joined to customers and products, count of orders and sum of revenue, sliced by date.” This ships to the model alongside the profile and meaningfully improves the result compared with leaving it blank.
-
Review the proposal. Measures and dimensions come back as editable cards. Rename them, change an aggregator, drop the ones you don’t want, fix a join the model guessed wrong.
-
Preview cube schema. This validates the cards, generates the Mondrian XML, and unlocks three more tabs: Source (the XML), Sample data, and Try a query.
-
Save as new schema version. The cube lands in Schemas, bound to your connection, and is queryable from Analyze straight away.
Try a query before you commit
The Try a query tab runs a real MDX sample against the draft before you save anything. It is the fastest way to catch a join that lands in the wrong place — a bad join shows up immediately as inflated totals or a wall of nulls, where reading the XML wouldn’t have told you.
Date hierarchies come for free
Date dimensions are the most common cube element and the most tedious to write. The detector finds date-shaped columns and builds a Year → Quarter → Month → Day hierarchy automatically. It fires on:
- Real
DATE/TIMESTAMP/TIMESTAMPTZ/DATETIMEcolumns, including vendor variants likeTIMESTAMP(6). - Names that give it away —
*_date,*_at,*_on,*_time, plus baredate,created,updated,modified. - String columns whose sample values parse as ISO dates
(
2026-03-14,2026-03-14T09:00:00,2026/03/14).
It deliberately doesn’t fire on integer *_year / *_month
columns — those are date-key shards that already have their own
structure — or on time-only columns, which can’t fill out a
Y/Q/M/D hierarchy.
If you need something non-standard — a fiscal year starting in April, say — edit the dimension card or build the hierarchy on the canvas.
LLM cost and quota
Every AI draft costs real money, so each tenant has a monthly inference budget. Past 80% of it the page starts warning you; past 100% further proposals are refused, with the date the budget resets. Ask us and we’ll raise the cap.
Profiling, previewing and saving are all free — only the propose-and-refine step spends budget. The canvas spends nothing at all, which makes it the cheaper habit for iterating on a cube you already understand.
Related
- Data sources — the warehouses and files the designer reads from.
- Schemas — where saved cubes and their version history live.
- Cube library — start from a working cube rather than a blank canvas.
- Mondrian schemas — the reference for everything the canvas is writing on your behalf.
- Analyze — open a saved cube and query it.