Skip to content

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:

TabWhat you do there
Schema CanvasPick a warehouse and lay tables out. Joins between them are the cube’s skeleton.
Dimensions & HierarchiesTurn tables into dimensions; stack levels into hierarchies; set level types.
Facts & MeasuresGroup measures, choose aggregators, and add calculated measures like Profit = [Sales] − [Cost].
Confirm cubeValidation 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 Years level. 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

  1. Pick a data source. Any saved warehouse connection, or an uploaded file.

  2. 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 takes include: and remove: filters.

  3. 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.

  4. 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.

  5. 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.

  6. 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 / DATETIME columns, including vendor variants like TIMESTAMP(6).
  • Names that give it away — *_date, *_at, *_on, *_time, plus bare date, 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.

  • 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.