Dashboards and ad-hoc analysis
Working in Metabase - parity dashboards, questions, SQL, collections, and subscriptions.
Dashboards and ad-hoc analysis
Metabase (https://joe-metabase.fly.dev) is the internal BI surface. If you used Looker’s Explore, Metabase’s equivalent is Questions; Looker dashboards map to Metabase Dashboards; Looker folders map to Collections.
The parity dashboards
Rebuilt one-for-one from the top Looker surfaces (which together carried ~92% of embedded views):
| Dashboard | Looker equivalent | Notes |
|---|---|---|
| Home (Parity) | Home | Network overview cards |
| Sales Report (Parity) | Sales Report | Per-shop sales detail; every tile verified against the LookML definitions |
| Payout by Arrival Date (Parity) | Payout by Arrival Date | Banking-day payouts by arrival |
| All Transactions (Parity) | All Transactions | Full ledger detail; 7.4M rows, 365 days, all money splits |
| Network Overview / Network Pulse (Admin) / Store Spotlight | internal views | Network health, single-store deep dive |
| Shop Sales Report (Embed) | merchant embeds | Shop-locked; powers embeds and PDF reports |
Filters at the top of each dashboard (shop, date range) apply to every card. Cards are built on bi.* views, so their numbers are identical to the scheduled emails by construction.
Building your own questions
- + New > Question for the GUI builder: pick a
bi.*view, filter, summarize, visualize. No SQL needed for most day-to-day questions. - + New > SQL query for full control. Variables work:
where business_date >= {{start_date}}creates a date picker automatically. - Save into a collection. Use “Our analytics” shared collections, not your personal collection, for anything a teammate might need. Saved questions can be added to dashboards.
Tips carried over from how this instance is set up:
- The Metabase database connection uses a read-only role with a connection cap. Dashboards fire all cards concurrently, so if you build a dashboard with 15+ heavy cards it can queue; keep dashboards focused.
- Prefer
bi.*views over raw tables (the data dictionary explains each). If a view is missing something you need repeatedly, ask for the view to be extended rather than working around it - that keeps the contract honest. - Query today’s data from live dashboards or
recent_orders; the ledger and facts close at the nightly sync.
Metabase subscriptions vs platform reports
Metabase has its own email subscription feature (dashboard > sharing > subscriptions). It is fine for internal “send me this dashboard weekly” needs.
Anything merchant-facing or accounting-critical should be a platform scheduled report instead: those are versioned in code, tested against fixtures, idempotent (a failed run retries without double-sending), branded, and logged. Rule of thumb: if the recipient is outside the data team or the output feeds a downstream system (QuickBooks, Zapier), it is a platform report.
Sharing and permissions
- Everyone on the data/ops team is either an admin or the Data Analyst group.
- Dashboards can be shared by URL internally; merchant-facing sharing goes through signed embeds, never by adding merchants to Metabase.