Metabase
Introducció
Metabase és una eina de business intelligence i visualització de dades de codi obert. La seva gran avantatge respecte a Power BI és que es pot autodesplar en qualsevol servidor amb Docker en menys de 5 minuts, sense llicències, i connectar directament a les bases de dades dels projectes d'IA.
El 2025, Metabase és l'elecció preferida de molts equips tècnics i startups per la seva senzillesa, la capacitat d'autodesplegament i el fet que no requereix coneixements de BI per crear visualitzacions útils.
Per què Metabase per a equips d'IA
flowchart TD
A[Equip d'IA] -->|Guarda prediccions, mètriques, logs| B[(PostgreSQL\nMySQL\nSQLite)]
B -->|Connector natiu| M[Metabase]
M -->|Dashboard en temps real| C[Tech Lead]
M -->|Informe setmanal| D[Direcció]
M -->|Alertes| E[Monitoratge]
Avantatges específics per a projectes d'IA:
| Avantatge | Detall |
|---|---|
| Gratuït i open source | La versió Community és gratuïda, autodesplegada amb Docker |
| Connexió directa a la BD | Connecta a PostgreSQL, MySQL, SQLite, MongoDB, DuckDB... |
| Sense SQL obligatori | El Query Builder permet crear preguntes sense escriure SQL |
| SQL natiu quan cal | Quan el Query Builder no arriba, SQL complert disponible |
| Actualització en temps real | Les consultes s'executen cada vegada que obres el dashboard |
| Compartir amb un clic | URLs públiques, embeds i exportació CSV/Excel sense configuració |
| Alertes automàtiques | Notificació per email quan un KPI supera un llindar |
1. Instal·lació amb Docker
Metabase s'instal·la en un sol comandament. Per a un entorn de producció, el recomanable és usar una BD externa (PostgreSQL) per a les metadades de Metabase.
Opció A: Prova ràpida (H2 integrada)
Obre el navegador a http://localhost:3000. Metabase usa H2 (BD integrada) per guardar la seva configuració.
H2 no és per a producció
La BD H2 integrada no es pot fer còpia de seguretat fàcilment i no suporta múltiples instàncies. Usa PostgreSQL per a qualsevol entorn que no sigui una prova local.
Opció B: Docker Compose amb PostgreSQL (recomanada)
# docker-compose.yml
version: '3.8'
services:
metabase-db:
image: postgres:16-alpine
container_name: metabase-db
environment:
POSTGRES_DB: metabase
POSTGRES_USER: metabase
POSTGRES_PASSWORD: metabase_password_segura
volumes:
- metabase_db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U metabase"]
interval: 10s
timeout: 5s
retries: 5
metabase:
image: metabase/metabase:latest
container_name: metabase
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: metabase_password_segura
MB_DB_HOST: metabase-db
MB_SITE_URL: http://localhost:3000
depends_on:
metabase-db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "--fail", "-I", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
volumes:
metabase_db_data:
# Iniciar
docker compose up -d
# Veure estat (Metabase triga ~60s en arrencar)
docker compose logs -f metabase
# Actualitzar a nova versió
docker compose pull && docker compose up -d
Configuració inicial
La primera vegada, Metabase et guia per un assistent:
- Idioma → Castellà o Anglès (Metabase no té català)
- Crear compte d'administrador (email + contrasenya)
- Afegir una base de dades de les teves dades
- Configuració completada → Dashboard de benvinguda
2. Connectar fonts de dades
Metabase suporta més de 20 bases de dades de manera nativa:
| Motor | Notes |
|---|---|
| PostgreSQL | Connectors optimitzats, recomanat |
| MySQL / MariaDB | Suport complet |
| SQLite | Per a fitxers locals |
| MongoDB | Mode de documents |
| DuckDB | Excel·lent per a fitxers Parquet/CSV grans |
| BigQuery | Google Cloud |
| Redshift | AWS |
| Snowflake | Entorn cloud |
| Oracle | Edicions Pro i Enterprise |
Afegir PostgreSQL on el model guarda les prediccions
- Admin → Databases → Add a database
- Seleccionar PostgreSQL
- Emplenar camps:
Display name: Prediccions Model Churn
Host: localhost (o el nom del contenidor Docker)
Port: 5432
Database name: ia_produccion
Username: readonly_user ← crea un usuari de només lectura!
Password: ****
Usuari de només lectura
Mai connectis Metabase amb un usuari de BD que tingui permisos d'escriptura. Crea un usuari específic amb GRANT SELECT ON ALL TABLES:
3. Preguntes (Questions)
Les preguntes són les visualitzacions individuals de Metabase. Cada pregunta consulta una font de dades i retorna un resultat visual.
3.1 Query Builder (sense SQL)
El Query Builder permet crear preguntes arrossegant i configurant opcions:
Pas 1 → Escull la taula: prediccions
Pas 2 → Filtra: data >= inici del mes actual
Pas 3 → Agrupa per: model_id, dia
Pas 4 → Mètrica: Comptador (nombre de prediccions)
Pas 5 → Visualització: Gràfic de línia
Operacions disponibles al Query Builder:
| Operació | Descripció | Exemple |
|---|---|---|
| Filter | Filtra files | data >= '2025-01-01' |
| Summarize | Agrega valors | AVG(accuracy), COUNT(*) |
| Group by | Agrupa resultats | Per model_id i per mes |
| Sort | Ordena resultats | Per data DESC |
| Limit | Limita files | Primeres 100 files |
| Join | Uneix taules | prediccions LEFT JOIN models |
| Custom expression | Columna calculada | [accuracy] * 100 |
3.2 SQL natiu
Per a consultes complexes que el Query Builder no pot generar, usa el mode SQL:
-- Dashboard de resum del model per setmana
WITH metriques_setmanals AS (
SELECT
DATE_TRUNC('week', created_at) AS setmana,
model_id,
COUNT(*) AS total_prediccions,
AVG(confianca) AS confianca_mitjana,
SUM(CASE WHEN correcta THEN 1 ELSE 0 END)::FLOAT / COUNT(*) AS accuracy,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY latencia_ms) AS p95_latencia
FROM prediccions
WHERE created_at >= NOW() - INTERVAL '90 days'
GROUP BY 1, 2
)
SELECT
setmana,
model_id,
total_prediccions,
ROUND(confianca_mitjana::NUMERIC, 3) AS confianca_mitjana,
ROUND(accuracy::NUMERIC, 4) AS accuracy,
ROUND(p95_latencia::NUMERIC, 1) AS p95_latencia_ms
FROM metriques_setmanals
ORDER BY setmana DESC, model_id;
Variables a SQL de Metabase
Pots usar variables {{variable}} a les consultes SQL per crear filtres interactius:
4. Visualitzacions
Metabase ofereix les visualitzacions essencials per a dashboards de dades:
| Visualització | Quan usar-la |
|---|---|
| Número | Un sol KPI (accuracy actual: 94.2%) |
| Tendència | KPI amb variació vs període anterior |
| Barra de progrés | KPI vs objectiu (92% de 95% objectiu) |
| Gràfic de línies | Evolució temporal (accuracy per dia) |
| Gràfic de barres | Comparació entre categories |
| Gràfic de dispersió | Correlació entre dues mètriques |
| Mapa de calor (pivot) | Valors per dues dimensions (model × mes) |
| Funnel | Etapes d'un procés seqüencial |
| Taula | Llista de registres individuals |
| Mapa | Distribució geogràfica |
| Gauge | Indicador circular de rendiment |
Configurar un gràfic
Quan crees una pregunta i fas clic a Visualize, pots:
- Canviar el tipus de gràfic (línia, barra, taula...)
- Configurar els eixos X i Y
- Afegir línies de referència (goal lines)
- Configurar colors i etiquetes
- Agregar múltiples sèries al mateix gràfic
5. Dashboards
Un dashboard agrupa diverses preguntes en una sola pàgina interactiva.
Crear un dashboard de monitoratge d'IA
- Nou → Dashboard → Posa nom:
Monitor Model Churn - Fes clic a + per afegir preguntes existents o crear-ne de noves
- Arrossega i redimensiona els cards com un grid
- Afegir filtres globals que afecten múltiples cards a la vegada:
- Filtre de data (rang de dates)
- Filtre de model (selecció múltiple)
- Afegir text per a títols de seccions i context
- Guardar → el dashboard és accessible per a tots els usuaris amb permisos
Layout recomanat per a dashboard d'IA
┌───────────────────────────────────────────────────────────┐
│ MONITOR: Model de Predicció de Churn [Filtre: Dates] │
├──────────┬──────────┬──────────┬──────────────────────── │
│ Accuracy │ Prec. │ Recall │ Pred. avui │
│ 94.2% │ 91.8% │ 96.1% │ 1,247 │
├──────────┴──────────┴──────────┴──────────────────────── │
│ │
│ Accuracy diaria (últims 30d) │ Dist. per classe │
│ [Gràfic de línies] │ [Gràfic de barres] │
│ │ │
├──────────────────────────────────┴────────────────────────│
│ │
│ Latència P95 (ms) — últimes 24h │
│ [Gràfic de línies amb línia de referència a 500ms] │
│ │
└───────────────────────────────────────────────────────────┘
Filtres de dashboard
Els filtres permeten als usuaris explorar les dades de manera interactiva sense crear noves preguntes:
| Tipus de filtre | Configuració |
|---|---|
| Data relativa | "Últims 7 dies", "Aquest mes", rang personalitzat |
| Selecció de text | Llista de models per seleccionar |
| Número | Rang de valors numèrics |
| True/False | Prediccions correctes / incorrectes |
6. Compartir i publicar
Compartir amb usuaris interns
Metabase gestiona usuaris i grups amb permisos granulars:
| Permís | Descripció |
|---|---|
| View | Veure dashboards i preguntes existents |
| Collection | Organitzar preguntes en carpetes (collections) |
| Data | Accés a fonts de dades específiques |
| Curate | Crear i modificar preguntes |
URL pública
Per compartir amb persones sense compte a Metabase:
- Dashboard → Sharing → Enable public link
- Copia la URL pública (no requereix login)
Seguretat de les URLs públiques
Les URLs públiques no requereixen autenticació. No les uses per a dades sensibles (dades personals, informació confidencial).
Embeds
Metabase permet incrustar dashboards i gràfics en aplicacions web:
<!-- Embed d'un dashboard a una aplicació web -->
<iframe
src="http://localhost:3000/public/dashboard/XXXXXXXXX"
frameborder="0"
width="800"
height="600"
allowtransparency>
</iframe>
Per a embeds amb autenticació i paràmetres dinàmics, usa els Signed Embeds (disponible a Metabase Pro).
Subscripcions i alertes
Subscripcions: envia automàticament un dashboard per email o Slack: - Diari a les 8:00 - Setmanal els dilluns - En format PDF o PNG
Alertes: notificació quan una condició es compleix: - "Notifica'm quan Accuracy < 0.90" - "Alerta quan el nombre d'errors augmenta un 20% respecte ahir"
7. Metabase vs Power BI: decisió pràctica
| Criteri | Metabase | Power BI |
|---|---|---|
| Cost | Gratuït (self-hosted) | €10/usuari/mes (cloud) |
| Instal·lació | Docker, 5 minuts | Windows Desktop, compte Microsoft |
| Corba d'aprenentatge | Baixa | Mitjana-alta (DAX) |
| Fonts de dades | BD directes (SQL) | Centenars de connectors |
| Transformació ETL | Limitada (SQL) | Power Query molt potent |
| Càlculs complexos | SQL avançat | DAX (molt potent) |
| IA integrada | Bàsica | Copilot, Key Influencers, Anomaly |
| Ecosistema | Independent | Microsoft 365, Teams, Azure |
| Casos ideals | Equips tècnics, BD directes, startups | Empreses Microsoft, informes de negoci |
Regla d'or: si tens PostgreSQL (o MySQL) on el model guarda els resultats → Metabase. Si l'empresa usa Excel/Teams/Azure i el públic és de negoci → Power BI.
Activitat
Desplega Metabase amb Docker Compose i connecta'l a una BD SQLite o PostgreSQL amb dades d'exemple. Crea un dashboard amb almenys 4 visualitzacions: un KPI numèric, un gràfic de línies temporal, un gràfic de barres per categoria, i una taula de registres recents. Comparteix el dashboard amb una URL pública.