Pràctica PR5074/01: Dashboard de Business Intelligence amb Power BI Desktop
Objectius
- Importar i transformar dades amb Power Query Editor
- Construir un model de dades Star Schema correcte
- Crear mesures DAX incloent comparatives temporals (YoY)
- Dissenyar un dashboard professional amb 6 o més visualitzacions
- Afegir slicers i interactivitat (drill-through, tooltips)
- Publicar o exportar el dashboard en format
.pbix
Prerequisits
- Temps estimat: 6-8 hores
- Power BI Desktop instal·lat (gratuït per a Windows): https://powerbi.microsoft.com/desktop
- Dataset "Contoso Sales Sample" (gratuït, Microsoft) o el CSV de vendes que es proporciona a continuació
- Coneixements bàsics de SQL i modelatge de dades
Power BI Desktop és per a Windows
Power BI Desktop funciona nativament a Windows. Usuaris de macOS o Linux: podeu usar una màquina virtual Windows (Virtualbox + Windows 11 eval), o bé usar el servei Power BI al núvol (powerbi.com, requereix compte Microsoft gratuït). Una alternativa open source és Apache Superset (vegeu la sessió 30) o Metabase.
Introducció
Un dashboard de Business Intelligence tradueix dades en decisions. Els dashboards professionals de Power BI alimenten decisions estratègiques a empreses com Telefónica, Inditex, BBVA o Mercadona. En aquesta pràctica crearàs un dashboard complet sobre dades de vendes fictícies d'una empresa catalana de distribució de productes electrònics.
L'objectiu és no solament saber fer visualitzacions, sinó entendre el cicle complet de BI: des de la font de dades fins al dashboard que veurà el director general. Això inclou la qualitat de les dades (Power Query), el model relacional (Star Schema), la capa semàntica (DAX) i la capa de presentació (visualitzacions).
flowchart LR
A[CSV / Excel\nFonts de dades] --> B[Power Query\nTransformació]
B --> C[Model de dades\nStar Schema]
C --> D[Mesures DAX\nIndicadors]
D --> E[Visualitzacions\nGràfics]
E --> F[Dashboard\nInteractiu]
F --> G[Publicació\n.pbix]
Part 1: Obtenció i preparació de les dades
1.1 Crear el fitxer CSV de vendes
Crea un full de càlcul o descàrrega el CSV de vendes proporcionat. Dades mínimes necessàries:
Taula vendes.csv (mínim 500 registres, abast 2022-2024):
ID_Venda,Data,ID_Producte,ID_Client,ID_Venedor,Quantitat,Preu_Unitari,Descompte
V001,2024-01-15,P012,C045,V003,2,299.99,0.05
V002,2024-01-15,P007,C012,V001,1,149.99,0.00
V003,2024-01-16,P023,C078,V002,3,89.99,0.10
...
Taula productes.csv:
ID_Producte,Nom_Producte,Categoria,Subcategoria,Cost_Unitari,Preu_Venda
P001,Portàtil Lenovo IdeaPad,Informatica,Portàtils,450.00,699.99
P002,Monitor Samsung 27",Informatica,Monitors,180.00,299.99
P003,Teclat mecànic Logitech,Periferics,Teclats,45.00,89.99
...
Taula clients.csv:
ID_Client,Nom_Client,Segment,Provincia,Pais,Email
C001,Tech Solutions SL,Empresa,Barcelona,Espanya,info@techsolutions.cat
C002,Maria Puig,Particular,Girona,Espanya,mpuig@email.com
...
Taula venedors.csv:
ID_Venedor,Nom_Venedor,Zona,Email
V001,Pau Ferrer,Nord,pferrer@empresa.cat
V002,Laia Mas,Sud,lmas@empresa.cat
V003,Jordi Roca,Centre,jroca@empresa.cat
Dataset Contoso (alternativa)
Si prefereixes dades més riques, descarrega el Contoso Sales Sample des de https://github.com/microsoft/powerbi-desktop-samples. Conté dades multinacionals de vendes de productes electrònics amb historial de diversos anys.
1.2 Importació a Power BI
- Obre Power BI Desktop
- Inici > Obtenir dades > Text/CSV
- Selecciona
vendes.csv→ Transformar dades (no carregar directament) - Repeteix per a
productes.csv,clients.csvivenedors.csv
Part 2: Power Query — Transformació de dades
2.1 Neteja de la taula Vendes
Al Power Query Editor, aplica les transformacions següents sobre la taula vendes:
Canvis de tipus de dades:
- ID_Venda → Text
- Data → Data
- Quantitat → Número enter
- Preu_Unitari, Descompte → Número decimal
Columna calculada: Import Net
- Afegir columna > Columna personalitzada
- Nom:
Import_Net - Fórmula:
= [Quantitat] * [Preu_Unitari] * (1 - [Descompte])
Columna calculada: Marge Brut
Per calcular el marge necessitem unir el cost des de productes. Primer aplica el Merge (Part 2.3) i després:
- Nom:
Marge_Brut - Fórmula:
= [Import_Net] - ([Quantitat] * [Cost_Unitari])
2.2 Taula de dates (Date Table)
Power BI necessita una taula de dates explícita per a les intel·ligències temporals de DAX:
- Inici > Transforma dades > Taula de dates
- Alternativament, crea una taula des de M (Power Query):
// Crea una taula de dates de l'1/1/2022 fins al 31/12/2024
let
DataInici = #date(2022, 1, 1),
DataFi = #date(2024, 12, 31),
NombreDies = Duration.Days(DataFi - DataInici) + 1,
Dates = List.Dates(DataInici, NombreDies, #duration(1, 0, 0, 0)),
TaulaBase = Table.FromList(Dates, Splitter.SplitByNothing(), {"Data"}),
TaulaFinal = Table.AddColumn(
Table.AddColumn(
Table.AddColumn(
Table.AddColumn(TaulaBase,
"Any", each Date.Year([Data])),
"Mes", each Date.Month([Data])),
"NomMes", each Date.ToText([Data], "MMMM", "ca-ES")),
"Trimestre", each "T" & Text.From(Date.QuarterOfYear([Data])))
in
TaulaFinal
2.3 Merge de taules
Combina Vendes amb Productes:
- A la taula
vendes: Inici > Combinar consultes > Combinar - Selecciona
productescom a taula secundària - Clau:
ID_Producte↔ID_Producte - Expandeix les columnes:
Nom_Producte,Categoria,Cost_Unitari
Combina Vendes amb Clients i Venedors de la mateixa manera.
Tipus de join a Power Query
Usa Left Outer Join (conserva totes les files de vendes, afegeix la informació de producte/client). Si uses Inner Join i hi ha IDs sense correspondència, perdràs vendes del resultat final.
Part 3: Model de dades — Star Schema
3.1 Disseny del model
El model Star Schema correcte per a aquesta pràctica és:
erDiagram
VENDES ||--o{ PRODUCTES : "ID_Producte"
VENDES ||--o{ CLIENTS : "ID_Client"
VENDES ||--o{ VENEDORS : "ID_Venedor"
VENDES ||--o{ DATES : "Data"
VENDES {
string ID_Venda
date Data
string ID_Producte
string ID_Client
string ID_Venedor
int Quantitat
decimal Preu_Unitari
decimal Descompte
decimal Import_Net
decimal Marge_Brut
}
PRODUCTES {
string ID_Producte
string Nom_Producte
string Categoria
string Subcategoria
decimal Cost_Unitari
decimal Preu_Venda
}
CLIENTS {
string ID_Client
string Nom_Client
string Segment
string Provincia
string Pais
}
VENEDORS {
string ID_Venedor
string Nom_Venedor
string Zona
}
DATES {
date Data
int Any
int Mes
string NomMes
string Trimestre
}
3.2 Configuració de relacions a Power BI
A la vista de Model:
- Drag & drop
VENDES[Data]→DATES[Data](relació 1:N, activa) - Drag & drop
VENDES[ID_Producte]→PRODUCTES[ID_Producte](1:N, activa) - Drag & drop
VENDES[ID_Client]→CLIENTS[ID_Client](1:N, activa) - Drag & drop
VENDES[ID_Venedor]→VENEDORS[ID_Venedor](1:N, activa)
No creïs relacions directes entre dimensions
El Star Schema no té relacions entre PRODUCTES i CLIENTS directament — totes les relacions passen per la taula de fets (VENDES). Si crees relacions directes entre dimensions, obtindràs un model incorrecte que pot donar mesures errònies.
Part 4: Mesures DAX
4.1 Mesures bàsiques d'ingressos
Ves a la taula VENDES a la vista de Dades i crea les mesures seguents (Inici > Nova mesura):
4.2 Mesures temporals (Time Intelligence)
// Ingressos del mateix perióde de l'any anterior
Ingressos_AA = CALCULATE(
[Ingressos],
SAMEPERIODLASTYEAR('DATES'[Data])
)
// Creixement interanual (Year-over-Year)
Creixement_YoY =
VAR IngressosActuals = [Ingressos]
VAR IngressosAA = [Ingressos_AA]
RETURN
DIVIDE(IngressosActuals - IngressosAA, IngressosAA, BLANK())
// Ingressos acumulats des d'inici d'any (Year-to-Date)
Ingressos_YTD = TOTALYTD([Ingressos], 'DATES'[Data])
// Ingressos acumulats mes anterior
Ingressos_Mes_Anterior = CALCULATE(
[Ingressos],
DATEADD('DATES'[Data], -1, MONTH)
)
// Variació respecte mes anterior
Var_Mes_Anterior =
DIVIDE([Ingressos] - [Ingressos_Mes_Anterior], [Ingressos_Mes_Anterior], BLANK())
4.3 Mesures de ranking
// Rang del producte per ingressos (dins del context de filtre actual)
Rang_Producte =
RANKX(
ALLSELECTED(PRODUCTES[Nom_Producte]),
[Ingressos],
,
DESC,
DENSE
)
// Ingressos del Top 10 de productes
Ingressos_Top10 =
CALCULATE(
[Ingressos],
TOPN(10, ALL(PRODUCTES[Nom_Producte]), [Ingressos])
)
// Percentatge sobre el total
Pct_Total =
DIVIDE([Ingressos], CALCULATE([Ingressos], ALL(VENDES)), 0)
Formateja les mesures DAX
Selecciona cada mesura i aplica el format adequat al panell de propietats: - Ingressos, Marge: Moneda (€), 2 decimals - Creixement_YoY, Marge_Pct, Pct_Total: Percentatge, 1 decimal - Unitats: Número enter, separador de milers
Part 5: Visualitzacions — Disseny del dashboard
5.1 Estructura de pàgines del dashboard
Organitza el dashboard en 3 pàgines:
- Pàgina 1: Resum executiu — KPIs, evolució temporal, top productes
- Pàgina 2: Anàlisi de vendes — Per categoria, per zona, per venedor
- Pàgina 3: Detall de client (drill-through)
Portada obligatòria:
Afegeix un quadre de text a la part superior de la pàgina 1 amb:
DASHBOARD DE VENDES | Empresa Electrònica Catalana
Alumne: Joan Garcia | Data: Gener 2025 | Mòdul 5074 IABD
5.2 Pàgina 1: Resum executiu
Visualització 1 — KPI Cards (4 targetes)
Insereix 4 targetes (visual "Targeta" o "KPI"):
- Ingressos totals [Ingressos] vs. [Ingressos_AA]
- Unitats venudes [Unitats]
- Marge brut [Marge_Pct]
- Clients actius [Clients_Actius]
Visualització 2 — Gràfic de línies: evolució mensual
- Eix X:
DATES[NomMes](ordenat per mes numèric) - Valors:
[Ingressos],[Ingressos_AA] - Títol: "Evolució d'Ingressos Mensual vs Any Anterior"
Visualització 3 — Gràfic de barres: ingressos per categoria
- Eix Y:
PRODUCTES[Categoria] - Valors:
[Ingressos],[Marge_Brut] - Orientació: horitzontal
- Títol: "Ingressos i Marge per Categoria de Producte"
Visualització 4 — Taula: Top 10 productes
- Files:
PRODUCTES[Nom_Producte] - Columnes:
[Ingressos],[Unitats],[Marge_Pct],[Rang_Producte] - Format condicional a
[Marge_Pct]: escala de color verd-groc-vermell - Títol: "Top 10 Productes per Ingressos"
5.3 Pàgina 2: Anàlisi de vendes
Visualització 5 — Treemap: vendes per zona i província
- Grup:
VENEDORS[Zona] - Subgrup:
CLIENTS[Provincia] - Valors:
[Ingressos] - Títol: "Distribució Geogràfica d'Ingressos"
Visualització 6 — Gràfic de dispersió: rendiment de venedors
- Eix X:
[Unitats] - Eix Y:
[Ingressos] - Mida de la bombolla:
[Marge_Brut] - Llegenda:
VENEDORS[Nom_Venedor] - Títol: "Rendiment de Venedors (Unitats vs Ingressos)"
Visualització 7 — Gràfic de barres apilades: vendes per trimestre i segment
- Eix X:
DATES[Trimestre] - Valors apilats:
[Ingressos]perCLIENTS[Segment] - Títol: "Ingressos Trimestrals per Segment de Client"
5.4 Pàgina 3: Detall de client (Drill-through)
Configura la pàgina 3 com a pàgina de drill-through:
- A "Filtres de drill-through", afegeix el camp
CLIENTS[Nom_Client] - Afegeix les visualitzacions:
- Targeta amb el nom del client, ingressos totals i tickets
- Taula de totes les compres del client (data, producte, import)
- Gràfic de línies amb l'evolució temporal de compres del client
Per usar el drill-through: a qualsevol gràfic de la pàgina 1 o 2, fes clic dret sobre un client → "Mostra detalls".
Part 6: Filtres i interactivitat
6.1 Afegir slicers (filtres interactius)
A la pàgina 1, afegeix els slicers següents a la part esquerra o superior:
| Slicer | Camp | Tipus |
|---|---|---|
| Filtre d'any | DATES[Any] |
Llista (vertical) |
| Filtre de trimestre | DATES[Trimestre] |
Botons |
| Filtre de categoria | PRODUCTES[Categoria] |
Menú desplegable |
| Filtre de zona | VENEDORS[Zona] |
Llista |
Configuració dels slicers: 1. Selecciona cada slicer → Format > Títol → activa i posa el nom adequat 2. Activa Selecció múltiple per als slicers de categoria i zona
6.2 Sincronització de slicers entre pàgines
- Vista > Sincronitza slicers
- Activa la sincronització del slicer d'any per a totes les pàgines
- Activa la sincronització del slicer de categoria per a pàgines 1 i 2
6.3 Tooltips personalitzats
Crea una pàgina de tooltip personalitzat per al gràfic de categories:
- Crea una nova pàgina → propietats → activa "Pàgina de tooltip"
- Redueix la mida de la pàgina a "Tooltip" (360×240 px)
- Afegeix: nom de la categoria, ingressos, marge %, evolució mensual mini
- Al gràfic principal → Format → Tooltip → selecciona la nova pàgina
Part 7: Disseny visual i presentació
7.1 Tema corporatiu
- Vista > Temes > Personalitzar tema actual
- Colors primaris:
#1F3A60(blau fosc) i#E8A020(taronja) - Colors de fons:
#F5F7FA(gris clar) - Font: Segoe UI (estàndard Power BI)
7.2 Bones pràctiques de disseny
- Jerarquia visual: la informació més important (KPIs) a la part superior esquerra
- Alineació: usa "Alinear i distribuir" (Format > Alinear) per alinear tots els visuals
- Espai en blanc: deixa marges adequats, no saturis el dashboard
- Consistència de colors: un color per a cada mesura (Ingressos sempre en blau, Marge sempre en verd)
- Títols descriptius: "Ingressos Mensuals 2024 vs 2023" és millor que "Ingressos"
7.3 Afegir logo i branding
- Insereix > Imatge → afegeix el logotip de l'empresa o del curs
- Insereix > Formes → afegeix una barra de capçalera de color corporatiu
- El nom de l'alumne ha de ser visible a la portada del dashboard
Preguntes de reflexió
Preguntes de reflexió - PR5074/01
Respon per escrit en un document apart (Word o PDF) o com a pàgina d'anotacions al .pbix:
Modelatge i DAX:
-
Per qué el Star Schema és millor que un model desnormalitzat (una única taula plana) per a Power BI? Quins avantatges ofereix per al rendiment de les consultes DAX?
-
Explica la diferència entre
CALCULATEiFILTERa DAX. Quan s'usa cadascun? -
La mesura
Creixement_YoYretornaBLANK()quan no hi ha dades de l'any anterior. Per qué és millor retornarBLANK()que retornar0? -
Quina diferència hi ha entre una mesura DAX i una columna calculada? Quan convé usar cada una?
Disseny i storytelling:
-
Descriu les 3 decisions de disseny més importants que has pres per al teu dashboard. Per qué has triat aquells colors, aquelles visualitzacions i aquella estructura?
-
Imagina que has de presentar aquest dashboard al director general de l'empresa en 5 minuts. Quins 3 missatges clau li transmetries?
-
Quines limitacions té Power BI per a l'anàlisi de Big Data (datasets de milers de milions de files)? Quines alternatives existirien?
Lliurament
Puja els fitxers següents al Campus Virtual:
| Fitxer | Descripció |
|---|---|
dashboard_joan_garcia.pbix |
Fitxer Power BI complet i funcional |
capturesPantalla_joan_garcia.pdf |
PDF amb captures de les 3 pàgines del dashboard |
reflexions_joan_garcia.pdf |
Document amb les 7 preguntes de reflexió respostes |
Requisits mínims per ser avaluat
- El fitxer
.pbixha d'obrir-se correctament a Power BI Desktop. - El nom de l'alumne ha d'apareixer a la portada del dashboard.
- S'han d'haver creat almenys 6 visualitzacions a les pàgines 1 i 2.
- Les mesures DAX
Ingressos,Ingressos_AA,Creixement_YoYiMarge_Pcthan d'existir i funcionar correctament. - Ha d'existir almenys un drill-through configurat.
- Les 7 preguntes de reflexió han d'estar contestades.
Consulta la rúbrica PR5074/01 per als criteris detallats d'avaluació.
Pràctica PR5074/01 | Mòdul 5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs IABD 2026-2027