Przykładowe zbiory FoodMart
FoodMart to klasyczny zbiór przykładowy OLAP — fikcyjna sieć spożywcza z pięcioma latami danych sprzedaży w 37 tabelach (customer, product, store, time_by_day, sales_fact_1997 itd.). To ten sam zbiór, którego używa demonstracyjne pudełko Saiku Cloud, dostosowany rozmiarem do szybkiej iteracji (~10 MB skompresowane) i ukształtowany tak, by każda funkcja Mondriana miała co poćwiczyć.
Ta strona pozwala załadować FoodMart do Twojej własnej instancji testowej dowolnego wspieranego dialektu, żebyś mógł podłączyć ją do Saiku Cloud przez normalny przepływ BYOC i przejść przez przewodnik Rejestracja i pierwsza kostka end-to-end. Bez migracji hurtowni.
Co jest w zestawie
Wszystkie bundle zawierają:
- Dane — 37 tabel załadowanych pięcioma latami sprzedaży, klientów, produktów, sklepów, pracowników i zapasów.
- XML schemy Mondrian
(
foodmart.xml) — wgraj go do Schema designer Saiku Cloud, gdy Twoje dane są załadowane. XML jest neutralny dla dialektu; działa względem któregokolwiek z poniższych bundli. - Skrypt loadera referencyjnego lub runbook — per dialekt, bo każda hurtownia ma własną semantykę bulk-load.
Dump Postgres to kanoniczne źródło. Każdy inny bundle dialektu jest
mechanicznie tłumaczony z niego (mały skrypt sed na dialekt —
zobacz każdą zakładkę poniżej).
Bundle per dialekt
Postgres 12+ — załaduj bezpośrednio przez pg_restore lub psql.
# Pobierz (9,1 MB skompresowane, ~95 MB rozpakowane)curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \ -o foodmart.sql.gzcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/02-date-string-column.sql \ -o foodmart-date-string.sql
# Załaduj (Postgres 12+; rurkuje zgipowany dump do psql)createdb foodmartgunzip -c foodmart.sql.gz | psql -d foodmartpsql -d foodmart -f foodmart-date-string.sqlKrok 02-date-string-column.sql dodaje ALTER TABLE, którego
schema time_by_day Saiku oczekuje — to jednolinijkowa kolumna
date_string populowana z the_date. Zawsze uruchamiaj po
bulk-load.
Podłącz z: Przewodnik PostgreSQL.
MySQL 5.7+ lub MariaDB 10+ — załaduj przez małą sedową translację dumpu Postgres.
# Pobierz źródłowy dump PG + skrypt translacji MySQLcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \ -o foodmart.sql.gzcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-mysql/pg-to-mysql.sed \ -o pg-to-mysql.sed
# Przetłumacz + załaduj (5 reguł sed: nazwy typów, cytowanie# identyfikatorów, COPY → INSERT, obsługa sekwencji,# strip kwalifikatora schemy)gunzip -c foodmart.sql.gz | sed -E -f pg-to-mysql.sed > foodmart-mysql.sql
mysql -u root -p -e "CREATE DATABASE foodmart CHARACTER SET utf8mb4;"mysql -u root -p foodmart < foodmart-mysql.sqlPodłącz z: Przewodnik MySQL.
ClickHouse 23+ (Cloud lub self-hosted) — wzorzec loadera per dialekt żyje w repo saiku-cloud. Dostosuj lub skopiuj stamtąd.
# Skrypt translacji dla ClickHouse (3 reguły sed: mapowania typów# dla INT/VARCHAR, identyfikatory w pojedynczych vs podwójnych# cudzysłowach i preambuła DDL — ClickHouse potrzebuje jawnych# deklaracji silnika).curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \ -o foodmart.sql.gz# Reguły translacji per dialekt są w skryptach loaderów# saiku-cloud pod infra/hosts/app/foodmart-clickhouse/ — wykorzystaj# je, by napędzić własny load ClickHouse.Dla ClickHouse Cloud najprostsza ścieżka to ładowanie przez webową konsolę SQL, gdy przetłumaczysz dump lokalnie.
Podłącz z: Przewodnik ClickHouse.
Snowflake — użyj przepływu PUT + COPY INTO. Runbook
loadera dla własnego fixture CI Saiku żyje w repo saiku-cloud pod
docs/runbooks/load-foodmart-into-snowflake.md.
Dostosuj dla swojego konta:
-
Przetłumacz dump Postgres dla Snowflake (skrypt sed w folderze
infra/hosts/app/foodmart-snowflake/repo). -
Podziel na CSV-ki per tabela (mieszane DDL/DML dumpu nie
COPY INTOczysto). -
PUTkażdy CSV na stage Snowflake, potemCOPY INTO <table> FROM @<stage>per tabela. -
Zastosuj ALTER
date_string(tak samo jak Postgres).
Podłącz z: Przewodnik Snowflake.
BigQuery — loader eksportuje kanoniczny plik DuckDB FoodMart do
Parquet (auto-schemę wykrywa BigQuery) i wgrywa przez
load_table_from_file. ~10 MB łącznie, przyjazne dla free-tier
(1 TB zapytań/miesiąc + 10 GB magazynu w cenie).
Runbook jest pod
docs/runbooks/load-foodmart-into-bigquery.md
w repo saiku-cloud. Wersja skrócona:
-
Utwórz zbiór BigQuery (np.
foodmart). -
Ustaw zmienne środowiskowe:
GCP_PROJECT,BQ_DATASET,GOOGLE_APPLICATION_CREDENTIALS(JSON konta serwisowego). -
Uruchom loader:
Okno terminala curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-bigquery/load-foodmart-bigquery.py \-o load-foodmart-bigquery.pypip install google-cloud-bigquery pyarrow duckdbpython load-foodmart-bigquery.py -
Całkowity czas ładowania: 3–6 minut (jeden LoadJob na tabelę, ~5–10s każdy).
Podłącz z: Przewodnik BigQuery.
MotherDuck — załaduj ten sam format pliku DuckDB, którego
używa MotherDuck. Najprostsza ścieżka: załaduj lokalnie do pliku
.duckdb przez CLI DuckDB, potem wypchnij do MotherDuck przez
ATTACH 'md:<db>'.
-
Zbuduj plik DuckDB FoodMart lokalnie:
Okno terminala curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-duckdb/build-foodmart-duckdb.sh \-o build-foodmart-duckdb.shcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-duckdb/pg-to-duckdb.sed \-o pg-to-duckdb.sedcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \-o foodmart.sql.gzchmod +x build-foodmart-duckdb.sh./build-foodmart-duckdb.sh# → produkuje foodmart.duckdb (~12 MB) -
Wypchnij do MotherDuck przez CLI DuckDB:
Okno terminala export motherduck_token=<your-md-token>duckdb -c "ATTACH 'foodmart.duckdb' AS local; \ATTACH 'md:?motherduck_token=$motherduck_token' AS md; \CREATE OR REPLACE DATABASE md.foodmart FROM local;"
Podłącz z: Przewodnik MotherDuck.
Lokalny plik DuckDB — najprostsza ścieżka. Jeden plik ~12 MB, który możesz wgrać bezpośrednio do dashboarda Pliki Saiku Cloud i odwoływać się do niego z Twojej schemy Mondrian.
curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-duckdb/build-foodmart-duckdb.sh \ -o build-foodmart-duckdb.shcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/hosts/app/foodmart-duckdb/pg-to-duckdb.sed \ -o pg-to-duckdb.sedcurl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/foodmart-pg/init/01-foodmart.sql.gz \ -o foodmart.sql.gzchmod +x build-foodmart-duckdb.sh./build-foodmart-duckdb.sh# → produkuje foodmart.duckdbWgraj foodmart.duckdb przez dashboard Pliki;
Saiku Cloud automatycznie wystawia go jako połączenie.
Podłącz z: Przewodnik DuckDB-plik.
Po załadowaniu: wgraj schemę Mondrian
Gdy Twój wybrany dialekt ma załadowany FoodMart, ostatni krok to XML schemy Mondrian. Mapuje Twoje fizyczne tabele na kostki OLAP (Sales, Warehouse, HR itd.):
-
Pobierz XML schemy:
Okno terminala curl -L https://raw.githubusercontent.com/spiculedata/saiku-cloud/develop/infra/scripts/demo-seeds/foodmart.xml \-o foodmart.xml -
W Saiku Cloud idź do dashboarda Schemy i kliknij Wgraj schemę. Wybierz
foodmart.xml. -
Schema designer porównuje każde odwołanie
<Table>z Twoim połączeniem. Jeśli walidacja przechodzi (zielony tick na każdej kostce), Twój FoodMart jest gotowy do zapytań. -
Idź do dashboarda Analiza. Wybierz dowolną kostkę. Przeciągnij
[Measures].[Unit Sales]na półkę wierszy,[Time].[Year]na półkę kolumn. Powinieneś zobaczyć rok 1997 = 266 773.
To ta sama liczba, którą produkuje każdy dialekt — kanoniczny dowód, że Saiku Cloud poprawnie czyta Twoje dane.
Zbundlowany plik .duckdb dla niecierpliwych
Jeśli chcesz zero-translacji, zero-konfiguracji, oto gotowy plik FoodMart DuckDB bezpośrednio — ten sam, którego używa demonstracyjne pudełko Saiku Cloud, ~12 MB, gotowy do wgrania do dashboarda Pliki:
Bezpośrednie pobranie: zobacz stronę
wydań saiku-cloud
dla najnowszego foodmart-bundle-<version>.zip. Bundle zawiera
każdy artefakt, do którego ta strona się odwołuje — dump Postgres,
plik DuckDB, XML schemy, skrypty translacji per dialekt — w jednym
miejscu.