Modern Data Stack aplicat a BI
Contingut d'ampliació
Aquesta pàgina amplia el bloc de Visualització de dades amb continguts que no formen part del repartiment oficial de les 99 hores del currículum (vegeu Programació), tret de la comparativa KDD/CRISP-DM/SEMMA, que sí correspon al contingut oficial 2.4 del RA2 ("Principals mètodes i algorismes a la mineria de dades. Models SEMMA i CRISP-DM"). El professorat el pot tractar com a activitat de reforç o ampliació segons la disponibilitat horària del grup.
KDD, CRISP-DM i SEMMA
El KDD (Knowledge Discovery in Databases) és el procés formal de descobriment de coneixement a partir de dades, formalitzat per Fayyad et al. el 1996.
flowchart LR
Dades[(Dades brutes)] --> Seleccio
Seleccio[Seleccio] --> Preproces
Preproces[Preproces] --> Transformacio
Transformacio[Transformacio] --> Mining
Mining[Data Mining] --> Interpretacio
Interpretacio[Interpretacio i Avaluacio] --> Coneixement[(Coneixement)]
Fase 1 — Selecció: identificar les fonts de dades rellevants per al problema.
Fase 2 — Preprocés: neteja de dades (valors nuls, duplicats, errors tipogràfics, normalització de formats).
Fase 3 — Transformació: agregacions, derivació de noves variables, codificació de variables categòriques.
Fase 4 — Data Mining: classificació, clustering, regles d'associació, detecció d'anomalies, sèries temporals.
Fase 5 — Interpretació/Avaluació: valorar si els patrons descoberts són útils, nous i comprensibles.
| Aspecte | KDD | CRISP-DM | SEMMA |
|---|---|---|---|
| Origen | Acadèmic (1996) | Industrial, IBM/Daimler (1999) | SAS Institute (1999) |
| Enfoc | Descobriment de coneixement | Projecte de mineria de dades | Procés tècnic de modelat |
| Fases | 5 | 6 | 5 (Sample, Explore, Modify, Model, Assess) |
| Iteració | Implícita | Explícita, molt iterativa | Implícita |
| Negoci | Poc èmfasi | Fort èmfasi (fase 1: comprensió del negoci) | Poc èmfasi |
| Ús actual | Referència teòrica | Estàndard de facto a la indústria | Decreixent, lligat a l'ecosistema SAS |
Miniactivitat — AC5074/07/07
Aplica les cinc fases del KDD a un cas concret: a partir d'un CSV de vendes (o el de la teva pràctica PR507402), descriu què faries a cada fase (selecció, preprocés, transformació, mineria, interpretació) per respondre la pregunta "quins productes hauríem de deixar de vendre?". Compara-ho amb com abordaries el mateix problema seguint les 6 fases de CRISP-DM.
El Modern Data Stack
El Modern Data Stack (MDS) és una arquitectura modular de dades basada en serveis cloud especialitzats:
flowchart TB
subgraph Fonts["Fonts de Dades"]
DB[(BBDD produccio)]
API[APIs externes]
Sheets[Google Sheets]
end
subgraph Ingesta["Ingesta - ELT"]
Fivetran[Fivetran]
Airbyte[Airbyte OS]
end
subgraph Emmagatzematge["Data Warehouse / Lakehouse"]
Snowflake[Snowflake]
BigQuery[BigQuery]
DuckDB[DuckDB]
end
subgraph Transformacio["Transformacio"]
dbt[dbt]
end
subgraph Visualitzacio["Visualitzacio BI"]
Metabase[Metabase]
Looker[Looker]
end
Fonts --> Ingesta
Ingesta --> Emmagatzematge
Emmagatzematge --> Transformacio
Transformacio --> Emmagatzematge
Emmagatzematge --> Visualitzacio
Ingesta: Fivetran (SaaS, centenars de connectors, zero manteniment) o Airbyte (open-source, self-hosted).
Emmagatzematge: Snowflake (separació compute/storage, pay-per-use), BigQuery (serverless, ecosistema Google), Redshift (AWS) o DuckDB per a analítica local.
Transformació: dbt — veure secció següent.
Visualització: Metabase i Power BI, ja treballats en aquest mateix bloc.
DuckDB: OLAP al portàtil
DuckDB és un sistema de gestió de bases de dades OLAP (columnar) embegut, que s'executa directament dins del procés Python, R o CLI, sense servidor extern. Creat el 2019 a la Universitat de Delft, s'ha convertit en la solució de referència per a analítica local des del 2023.
Per què és rellevant: zero infraestructura (pip install duckdb), execució vectoritzada i paral·lela usant tots els cors del CPU, lectura directa de CSV/Parquet/JSON/S3 sense importar les dades, SQL complet (window functions, CTEs, PIVOT) i integració nativa amb pandas/Arrow.
import duckdb
conn = duckdb.connect()
# Analitzar múltiples fitxers Parquet directament, sense importar-los
resultat = conn.execute("""
SELECT categoria, SUM(import) AS total, COUNT(*) AS num_vendes
FROM read_parquet('vendes_*.parquet')
GROUP BY categoria
ORDER BY total DESC
LIMIT 10
""").df()
print(resultat)
| Escenari | DuckDB | Spark |
|---|---|---|
| Fitxers < 50 GB, 1 màquina | Molt millor (menys overhead) | Possible però excessiu |
| Dades > 500 GB | No adequat | Necessari |
| Analítica ad-hoc en portàtil | Perfecte | Poc pràctic |
| Pipeline de producció distribuït | No adequat | Ideal |
dbt aplicat a un pipeline de BI
dbt (data build tool) organitza les transformacions com a models SQL en capes, gestionant dependències i tests automàticament:
staging/ -> neteja i tipus, 1-a-1 amb la font bruta
intermediate/ -> combinació de dades de diverses fonts
marts/ -> lògica de negoci final, consumida pel BI
-- models/marts/finance/fct_vendes.sql
{{ config(materialized='table') }}
WITH vendes AS (
SELECT * FROM {{ ref('stg_vendes') }}
),
clients AS (
SELECT * FROM {{ ref('dim_clients') }}
)
SELECT
v.venda_id,
v.data_venda,
v.categoria,
c.segment AS segment_client,
v.import,
ROUND(v.import - v.cost, 2) AS marge_brut
FROM vendes v
LEFT JOIN clients c ON v.client_id = c.client_id
dbt run # compila i executa tots els models
dbt test # executa els tests de qualitat declarats al schema.yml
dbt docs generate && dbt docs serve # documentació i lineage navegables
Aquesta capa marts és, en la pràctica, la font que després connecta Metabase o Power BI per construir els dashboards.
Modelatge dimensional: ja treballat al Bloc 4
L'esquema estrella, el Data Vault 2.0 i el One Big Table (OBT) —les tres estratègies habituals per estructurar la capa marts d'un pipeline dbt— ja es treballen en detall a Data Warehouse, amb la comparativa i la miniactivitat corresponent. No es repeteixen aquí.
Bloc 7 | Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027