Salta el contingut

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)

docker run -d \
  --name metabase \
  -p 3000:3000 \
  metabase/metabase:latest

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:

  1. Idioma → Castellà o Anglès (Metabase no té català)
  2. Crear compte d'administrador (email + contrasenya)
  3. Afegir una base de dades de les teves dades
  4. 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

  1. AdminDatabasesAdd a database
  2. Seleccionar PostgreSQL
  3. 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:

CREATE USER metabase_ro WITH PASSWORD 'contrasenya';
GRANT CONNECT ON DATABASE ia_produccion TO metabase_ro;
GRANT USAGE ON SCHEMA public TO metabase_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO metabase_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO metabase_ro;

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:

SELECT * FROM prediccions
WHERE model_id = {{model_id}}
  AND created_at >= {{data_inici}}
Metabase generarà automàticament els controls de filtre al dashboard.


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

  1. NouDashboard → Posa nom: Monitor Model Churn
  2. Fes clic a + per afegir preguntes existents o crear-ne de noves
  3. Arrossega i redimensiona els cards com un grid
  4. Afegir filtres globals que afecten múltiples cards a la vegada:
  5. Filtre de data (rang de dates)
  6. Filtre de model (selecció múltiple)
  7. Afegir text per a títols de seccions i context
  8. 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:

  1. Dashboard → SharingEnable public link
  2. 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.