AgentStack
SKILL verified MIT Self-run

Gooddata To Sigma

skill-twells89-sigma-migration-skills-gooddata-to-sigma · by twells89

>-

No reviews yet
0 installs
7 views
0.0% view→install

Install

$ agentstack add skill-twells89-sigma-migration-skills-gooddata-to-sigma

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Gooddata To Sigma? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

GoodData → Sigma

> Windows / first run — run the environment doctor before anything else: > bash scripts/doctor.sh (macOS/Linux/Git Bash) or powershell -ExecutionPolicy Bypass -File scripts\doctor.ps1 (Windows). > It checks Ruby/Python/Node/bash and flags the Python "Store stub" + CRLF with exact fixes. Details: refs/environment.md.

> Status: LIVE-VALIDATED — exact parity, data model + workbook. > Proven end-to-end on a GoodData Cloud trial → Sigma (both on Snowflake): a > workspace (LDM + MAQL metrics + insights + dashboard) migrated to a Sigma data > model + workbook with exact parity on metrics and the relationship-backed > by-region breakdown; the BY ALL share metric was correctly flagged. Build > order, risks, and remaining work (live FOR-PREVIOUS date-intel) are in > refs/design-notes.md. Still: never claim a specific conversion works until > it passes live parity for that workspace.

Recreate a GoodData workspace in Sigma, in the same phase structure as the sibling converters (Tableau, Power BI, Qlik, Cognos, MicroStrategy, SSRS, …). This skill defers all workbook-spec authoring to the sigma-workbooks skill and all data-model authoring to sigma-data-models.

Read these first

  • refs/gooddata-api.md — declarative export API, auth, LDM + analytics shape.
  • refs/maql-mapping.md — MAQL → Sigma formula contract (the hard part).
  • refs/viz-type-mapping.md — insight + dashboard → Sigma element mapping.
  • refs/design-notes.md — full architecture, parity, RLS, risks, build order.

Converter architecture (read if you know the other migration skills)

Unlike the Group-A converters (tableau, powerbi, qlik, quicksight, looker, thoughtspot, cognos) — which share the vendored sigma-data-model-mcp engine (converter/*.mjs, with the hosted convert_* MCP tool as a fallback) — this skill uses a self-contained Python converter that ships in scripts/ (convert.py + maql.py). It runs locally via python3; there is no vendored .mjs bundle, no convert_gooddata_to_sigma MCP tool, and no --converter / *_MCP_DIR override — those concepts do not apply here. Nothing about the model conversion leaves your machine.

Phases

Phase 0 — Assess. Run the gooddata-assessment skill for an inventory + readiness readout before committing to a conversion.

Phase 1 — Discover. eval "$(scripts/get-token.sh)" then python3 scripts/discover.py --workspace workspace_layout.json (full LDM + analytics model). Confirm counts and the MAQL-keyword / insight-type histograms it prints.

Phase 1b — Gap-scout (measure MAQL coverage first). python3 scripts/scan_gaps.py --workspace gd_workspace.json reports coverage by category — AUTO (data-model metric), TIME_INTEL (→ workbook DateLookback), CONTEXT (→ workbook grouping/Level), UNHANDLED (logged to learned-rules). Run this before converting so coverage is known, not assumed.

Phase 1c — Reuse check (avoid DM sprawl). Before creating a new data model, reuse-check: look for an existing Sigma DM with the same signature (same connection + tables) and reuse/pick it (find-or-pick-dm) rather than POSTing a duplicate. Only build a fresh DM when no match exists.

Phase 2 — Data model. scripts/convert.py maps LDM datasets → Sigma warehouse-table elements (dim-before-fact; recover the path from the data-source db/schema so parity runs on the same warehouse), attributes/facts → columns, references → relationships, MAQL metrics → DM metrics (via maql.py); flagged metrics go to flags.json. POST the emitted spec to /v2/dataModels/spec (needs top-level schemaVersion + folderId), then read back the created DM (GET /v2/dataModels/{id}/spec) to capture the real, server-assigned element/column ids — a hard gate before any workbook work (POST reassigns ids).

python3 scripts/convert.py --workspace gd_workspace.json \
  --connection-id  --db  --schema  \
  --folder-id  --out dm_spec.json --flags flags.json

Phase 3 — Workbook. scripts/build_workbook.py maps insights → kpi-chart/bar-chart (each sourcing the migrated DM fact element; charts auto-aggregate by axis), recursively inlines metric MAQL into measure formulas, and resolves a related-dataset view attribute to a cross-element reference [FACT/REL_NAME/Dim] (exercises the migrated relationship). POST to /v2/workbooks/spec. Defers chart/layout/theming idioms to sigma-workbooks.

python3 scripts/build_workbook.py --workspace gd_workspace.json \
  --data-model-id  --fact-element  --fact-name  \
  --rel-name  --fact-dataset  --folder-id  --out wb_spec.json

Apply the dashboard grid layout as the LAST write (after all elements exist; a bare spec PUT wipes layout) — match GoodData's section/widget arrangement.

Phase 4 — Parity. Query the migrated DM/workbook elements vs the same warehouse truth. NOTE: sigma-mcp-v2 metric('', t) returns "Missing Metric" (a known MCP bug) — parity-query the columns/formulas directly instead.

Phase 5 — Repoint. Finalize workbook element sources onto the built DM — never skip.

Phase 6 — RLS + enhance. Port user data filters → Sigma user attributes via the consolidated RLS gate; apply theme via the theme registry; final visual-QA.

Contract: flag, never fake

Surface — never silently mis-convert — these (log to gap-scout / learned-rules, opt-in escalate):

  • MAQL with no clean warehouse equivalent (FlexQuery / compute-only).
  • BY / BY ALL / WITHIN context that can't be reconstructed from insight grain.
  • Exotic visualizations (funnel / sankey / waterfall / treemap …) → flagged table.
  • sql-backed datasets and anything the MAQL parser tags UNHANDLED.

Scope

GoodData Cloud / .CN (/api/v1 declarative API). Legacy Platform (/gdc/md/{project}, classic MAQL, MUF) is a documented fast-follow — see design-notes.md — not built.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.