Skip to content

FoodMart sample datasets

FoodMart is the classic OLAP sample dataset — a fictional grocery chain with five years of sales data across 37 tables (customer, product, store, time_by_day, sales_fact_1997, etc.). It’s the same dataset Saiku Cloud’s demo box uses, sized for fast iteration (~10 MB compressed) and shaped so every Mondrian feature has something to exercise.

This page lets you load FoodMart into your own test instance of any supported dialect, so you can connect it to Saiku Cloud via the regular BYOC flow and follow the Sign up & first cube walkthrough end-to-end. No warehouse migration required.

What’s included

All bundles include:

  • The data — 37 tables loaded with five years of sales, customers, products, stores, employees, and inventory.
  • Mondrian schema XML (foodmart.xml) — upload this to Saiku Cloud’s Schema designer once your data is loaded. The XML is dialect-neutral; it works against any of the bundles below.
  • A reference loader script or runbook — per-dialect, since each warehouse has its own bulk-load semantics.

The Postgres dump is the canonical source. Every other dialect bundle is mechanically translated from it (a small sed script per dialect — see each tab below).

Per-dialect bundles

Postgres 12+ — load directly via pg_restore or psql.

Terminal window
# Download (9.1 MB compressed, ~95 MB uncompressed)
curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \
-o foodmart.sql.gz
curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/02-date-string-column.sql \
-o foodmart-date-string.sql
# Load (Postgres 12+; pipes the gzipped dump into psql)
createdb foodmart
gunzip -c foodmart.sql.gz | psql -d foodmart
psql -d foodmart -f foodmart-date-string.sql

The 02-date-string-column.sql step adds an ALTER TABLE that Saiku’s time_by_day schema expects — it’s a one-line date_string column populated from the_date. Always run it after the bulk load.

Connect with: PostgreSQL guide.

After the load: upload the Mondrian schema

Once your dialect of choice has FoodMart loaded, the last step is the Mondrian schema XML. It maps your physical tables to OLAP cubes (Sales, Warehouse, HR, etc.):

  1. Download the schema XML:

    Terminal window
    curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/scripts/demo-seeds/foodmart.xml \
    -o foodmart.xml
  2. In Saiku Cloud, go to the Schemas dashboard and click Upload schema. Pick foodmart.xml.

  3. The Schema designer cross-checks every <Table> reference against your connection. If validation passes (green check on every cube), your FoodMart is ready to query.

  4. Head to the Analyze dashboard. Pick any cube. Drag [Measures].[Unit Sales] to the rows shelf, [Time].[Year] to the columns shelf. You should see the year 1997 = 266,773.

That’s the same number every dialect produces — the canonical proof that Saiku Cloud is reading your data correctly.

Bundled .duckdb file for the impatient

If you want zero-translation, zero-setup, here’s the pre-built FoodMart DuckDB file directly — same one Saiku Cloud’s demo box uses, ~12 MB, ready to upload to the Files dashboard:

Direct download: see the saiku-cloud releases page for the latest foodmart-bundle-<version>.zip. The bundle contains every artefact this page references — Postgres dump, DuckDB file, schema XML, per-dialect translation scripts — in one place.