Rúbrica PR5075/03: Dashboard BI amb Metabase i Docker
Informació general
| Camp | Detall |
|---|---|
| Pràctica | PR5075/03 — Dashboard BI amb Metabase i Docker |
| Mòdul | 5075 — Big Data Aplicat |
| Resultat d'Aprenentatge | RA5 — Construeix solucions de Business Intelligence sobre Big Data |
| Criteris d'Avaluació | CA5.1, CA5.2, CA5.3, CA5.4, CA5.5 |
| Pes sobre la nota final | 15% del mòdul 5075 |
| Format de lliurament | Fitxer .md o .pdf + captures de pantalla |
Criteris d'avaluació detallats
Criteri 1: Configuració Docker (10%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | docker-compose.yml amb PostgreSQL (versió 16) + Metabase (versió especificada), healthcheck a PostgreSQL amb pg_isready, nom de contenidors personalitzats amb el nom de l'alumne, xarxa interna dedicada, volums amb nom personalitzat. Metabase configurat per a usar PostgreSQL com a backend de metadades (no H2). |
| Notable | 7-8 | Docker Compose amb ambdós serveis funcionant correctament, noms personalitzats. Possiblement sense healthcheck explícit o sense PostgreSQL com a backend de Metabase. |
| Aprovat | 5-6 | Entorn Docker bàsic funcional (poden usar Metabase amb H2 intern). Els dos serveis corrent. |
| Insuficient | < 5 | Errors de configuració que impedeixen arrencar l'entorn, o ús de docker run manual sense docker-compose.yml. |
Evidències requerides: Captura de docker compose ps amb tots els serveis actius.
Criteri 2: Model de dades (20%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | Esquema relacionat complet (mínim 4 taules amb claus forànies definides), dades realistes i consistents (mínim 400 registres de vendes, 3 anys de dades, temporalitat estacional), índexos per a rendiment, almenys una vista analítica. El fitxer init.sql és net, comentat i reutilitzable. |
| Notable | 7-8 | Esquema correcte amb FK, dades suficients (mínim 200 registres), dades amb certa variabilitat temporal. init.sql ben estructurat. |
| Aprovat | 5-6 | Esquema bàsic funcional (2-3 taules), dades suficients per a crear almenys 3 visualitzacions. FK presents. |
| Insuficient | < 5 | Esquema incorrecte (sense FK), massa pocs registres per a fer anàlisi significativa (< 50), o init.sql absent. |
Evidències requerides: El fitxer init.sql lliurat i captura de la vista d'esquema de Metabase.
Criteri 3: Qualitat del dashboard (30%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | Dashboard amb 6+ visualitzacions coherents i complementàries (almenys: 1 línia temporal, 1 barra, 1 pastís o donut, 1 taula, 2 KPIs numèrics). El conjunt explica una història de negoci clara. Títol del dashboard inclou el nom de l'alumne. Visualitzacions ben titulades, eixos etiquetats, colors consistents. Layout organitzat i professional. |
| Notable | 7-8 | Dashboard amb 5+ visualitzacions correctes. Coherència visual acceptable. Títol amb nom de l'alumne. Possibles millores en el layout o en la narrativa. |
| Aprovat | 5-6 | Dashboard amb 3-4 visualitzacions funcionals. La majoria correctes. Títol amb nom de l'alumne present. |
| Insuficient | < 5 | Menys de 3 visualitzacions, visualitzacions incorrectes (tipus de gràfic inadequat per a les dades) o absència del nom de l'alumne. |
Evidències requerides: Captura del dashboard complet i captures individuals de cada visualització.
Criteri 4: Filtres i interactivitat (20%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | 3 filtres de dashboard (rang de dates, categoria, segment de client) connectats correctament a totes les visualitzacions que els suporten. Demostració d'ús: captures amb el dashboard filtrat per almenys 2 valors diferents. Comprensió de com els filtres s'encadenen entre visualitzacions. |
| Notable | 7-8 | 2 filtres funcionals i correctament connectats. Captures demostrant el funcionament dels filtres. |
| Aprovat | 5-6 | 1 filtre funcional (preferiblement el de dates). Captura del filtre en acció. |
| Insuficient | < 5 | Sense filtres o filtres mal configurats que no funcionen. |
Evidències requerides: Captures del dashboard amb filtres aplicats (almenys 2 estats diferents).
Criteri 5: SQL i mesures analítiques (15%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | SQL correcte en totes les preguntes. Almenys 3 mesures analítiques avançades: percentatge sobre total, comparativa any rere any (YoY), ranking, acumulat, tiquet mig. Ús de Window Functions (OVER) en almenys 1 consulta. Consultes optimitzades (INDEX, evitar SELECT *). |
| Notable | 7-8 | SQL correcte, 2 mesures calculades (almenys una percentual o YoY). Les consultes funcionen i retornen resultats correctes. |
| Aprovat | 5-6 | SQL bàsic correcte (SELECT, GROUP BY, ORDER BY). Almenys 1 mesura calculada (SUM, AVG). Potser algunes consultes necessiten revisió. |
| Insuficient | < 5 | Errors SQL que impedeixen obtenir resultats correctes, o abús de la GUI de Metabase sense usar SQL per a cap visualització. |
Evidències requerides: Captures de les consultes SQL a l'editor de Metabase.
Criteri 6: Lliurament i documentació (5%)
| Nivell | Puntuació | Descripció |
|---|---|---|
| Excel·lent | 9-10 | README complet amb instruccions d'arrancada clares (es pot reproduir sense ajuda), fitxer init.sql lliurat, mínim 6 captures de pantalla ben etiquetades, respostes argumentades a totes les preguntes de reflexió, temps emprat indicat, dificultats trobades i solucions. |
| Notable | 7-8 | README amb instruccions bàsiques, captures suficients, respostes a les preguntes de reflexió. |
| Aprovat | 5-6 | Lliurament present amb captures mínimes i instruccions parcials. |
| Insuficient | < 5 | Lliurament incomplet, sense captures o sense init.sql. |
Taula resum de criteris
| Criteri | Pes | Excel·lent (9-10) | Notable (7-8) | Aprovat (5-6) | Insuficient (< 5) |
|---|---|---|---|---|---|
| Configuració Docker | 10% | PostgreSQL + Metabase, healthcheck, noms personalitzats, volums | Docker funcionant, noms personalitzats | Entorn bàsic funcional | Errors greus de configuració |
| Model de dades | 20% | 4+ taules amb FK, 400+ registres 3 anys, índexos, vista | 3+ taules correctes, 200+ registres | 2-3 taules, 50+ registres | Esquema incorrecte o sense dades |
| Qualitat del dashboard | 30% | 6+ visualitzacions coherents, storytelling, nom alumne visible | 5+ visualitzacions correctes | 3-4 visualitzacions | Menys de 3 o incorrectes |
| Filtres i interactivitat | 20% | 3 filtres (dates, categoria, segment) connectats, capturat en ús | 2 filtres funcionals | 1 filtre funcional | Sense filtres |
| SQL i mesures | 15% | SQL correcte, Window Functions, YoY, percentatge, ranking | SQL correcte, 2 mesures calculades | SQL bàsic, 1 mesura | Errors SQL |
| Lliurament | 5% | README + init.sql + 6 captures + reflexions + dificultats | README + captures + reflexions | Lliurament parcial | Incomplet |
Penalitzacions
| Incidència | Penalització |
|---|---|
| Lliurament fora de termini (fins a 3 dies) | -1 punt de la nota final |
| Lliurament fora de termini (> 3 dies) | -2 punts de la nota final |
| Títol del dashboard sense nom de l'alumne | -0.5 punts |
| Nom de contenidors no personalitzats | -0.5 punts |
Sense fitxer init.sql lliurat |
-1 punt |
| Còpia d'un altre company (similitud > 80%) | 0 en la pràctica i comunicació a la direcció |
Preguntes de reflexió: criteris de correcció
| Pregunta | Resposta mínima acceptable |
|---|---|
| Pregunta 1 (Star Schema vs relacional) | Star Schema: consultes BI ràpides (menys JOINs, dades pré-agregades), però desnormalitzat (redundància). Relacional: bo per a OLTP (transaccions), menys eficient per a analítica (molts JOINs). |
| Pregunta 2 (vista vs taula materialitzada) | Vista: executa la consulta cada vegada que s'accedeix, sempre dades actualitzades. Taula materialitzada: guarda el resultat, necessita refresc manual o automàtic, molt més ràpida per a consultes analítiques. |
| Pregunta 3 (arquitectura Modern Data Stack) | Proposar: Airbyte/Fivetran per a ingestió, Snowflake/BigQuery com a DW, dbt per a transformació, Metabase/Superset per a visualització. Valorar l'arquitectura ELT (vs ETL tradicional). |
| Pregunta 4 (SQL vs GUI) | Limitacions GUI: no permet subconsultes, Window Functions, CASE WHEN complex, CTEs. Millor SQL quan: lògica analítica complexa, mesures calculades avançades, rendiment crític. |
| Pregunta 5 (categoria ingressos vs marge) | Resposta dependent de les dades (no hi ha resposta única). Valorar: identificar la discrepància concreta, explicar que vendre molt no és equivalent a guanyar molt, proposar prioritzar les categories d'alt marge. |
| Pregunta 6 (Metabase vs enterprise) | Possibles mancances Metabase OS: alertes natives limitades, no row-level security granular, sense semantic layer propi, connectors menys que Power BI. Avantatge open-source: cost zero, privacitat, personalització total. |
Exemples d'excel·lència
Un dashboard excel·lent per a PR5075/03 hauria de:
-
Contar una història: No es tracta de posar 6 gràfics qualsevol. El dashboard ha de respondre preguntes específiques de negoci de forma fluida.
-
Jerarquia visual clara: KPIs al capdamunt (resposta ràpida), tendències al mig (context temporal), detalls a la part inferior (exploració).
-
Colors amb significat: No usar colors aleatoris. Usar una paleta consistent: el verd per a creixement positiu, el vermell per a decreixement.
-
Títols informatius: No "Vendes per categoria", sinó "Ordinadors dominen el 45% dels ingressos (2024)".
-
Filtres que realment filten: Comprovar que en seleccionar "2023" al filtre de dates, totes les visualitzacions mostren dades de 2023.
Programació temporal orientativa
| Part | Temps estimat | Observació |
|---|---|---|
| Part 1: Configuració docker-compose | 20 min | Crear i adaptar el docker-compose |
| Part 1: Crear init.sql | 45 min | Afegir dades pròpies o adaptar les de mostra |
| Part 2: Arrancada i config Metabase | 20 min | Inclou temps d'espera de Metabase |
| Part 3: Crear les 6+ preguntes | 75 min | Aproximadament 12 min per pregunta |
| Part 4: Construir el dashboard | 40 min | Organitzar, títols, colors |
| Part 4: Configurar els filtres | 20 min | Connectar filtres a visualitzacions |
| Part 5: Subscripció (opcional) | 10 min | |
| Documentació i reflexió | 50 min | README, captures, reflexions |
| Total | ~4 hores |