| Primary Mental Model | Desktop-first drag-and-drop report builder | Open-source web-based dashboard platform | Fast self-serve query builder and dashboard cards | dbt-native BI built directly on dbt models | Code-based reporting rendered from Markdown + SQL | Headless semantic layer + open data APIs and web UI |
| Metric & Logic Storage | Proprietary DAX in .pbix files or Fabric semantic models | Virtual datasets and SQL Lab queries in metadata DB | Questions and Models stored in application DB | Defined as metrics in dbt schema YAML files | SQL queries embedded directly inside Markdown files | Code-first YAML or JavaScript models in Git repositories |
| Git / PR Workflow | Difficult; Git integration requires Fabric / PBIP format | Rudimentary; requires manual export/import or API sync | Serialization via YAML requires paid Enterprise tier | Native; metric definitions live inside your dbt repo | Native; entire reporting project is versioned in Git | Native; standard repository branch and pull request workflow |
| Cross-Platform Access | Windows-only desktop client for report authoring | 100% browser-based authoring and consumption | 100% browser-based authoring and consumption | 100% browser-based authoring and consumption | Local dev server runs on Mac, Linux, and Windows | Local dev server runs on Mac, Linux, and Windows |
| Downstream & API Access | Closed; XMLA endpoints require Premium capacity | REST API for metadata; chart data exportable | REST API returns card query results | Query API through dbt Cloud or Lightdash CLI | Static site export; not designed as an API service | Universal SQL API (Postgres protocol) + REST/GraphQL APIs |
| AI / Agent Readiness | Copilot locked behind Fabric capacity commitments | Community AI plugins; mostly raw schema text-to-SQL | Metabot assistant; generates queries over Metabase models | AI chat grounded in dbt metric definitions | LLMs can generate Markdown and SQL files | Native remote MCP server and semantic layer context |
| Biggest Trade-off / Gotcha | Windows lock-in, proprietary DAX, per-seat licensing creep | Heavy Docker/Celery footprint; complex permission setup | Metric governance is light; joins can duplicate easily | 100% tied to dbt; cannot query outside the dbt DAG | No ad-hoc drag-and-drop exploration for business users | Requires explicit YAML data modeling before building visuals |