Salta el contingut

Intel·ligència de Negoci (BI) amb Big Data

Introducció

La Intel·ligència de Negoci (Business Intelligence, BI) és el conjunt de processos, tecnologies i metodologies que transformen les dades brutes en informació accionable per a la presa de decisions empresarials. En el context del Big Data, el BI ha evolucionat radicalment: ja no es tracta només de generar informes estàtics de vendes mensuals, sinó de construir sistemes capaços d'analitzar terabytes de dades en temps quasi real, descobrir patrons ocults i presentar-los de manera accessible a persones no tècniques.

El 2025, la convergència entre Big Data i BI ha generat el que s'anomena Modern Data Stack: un conjunt d'eines cloud-native, majoria open-source o freemium, que qualsevol empresa pot desplegar en dies i que substitueix infraestructures tradicionals de Data Warehouse que costaven milions d'euros i anys d'implementació.


1. Evolució del BI

1.1 Les eres del BI

Era 1 — Reporting bàsic (1990-2000): Informes predefinits generats per TI a petició dels directius. Un informe de vendes mensuals podia trigar dies a preparar-se. Eines: Crystal Reports, Business Objects.

Era 2 — OLAP i Cubos (2000-2010): Processament Analític en Línia (OLAP). Els Data Warehouses tradicionals (Teradata, Oracle DW) emmagatzemaven dades en cubs multidimensionals que permetien anàlisi per dimensions (temps, geografia, producte). L'usuari podia "pirullar" el cub per a veure les dades des de qualsevol angle. Eines: Microsoft Analysis Services, Cognos, Business Objects XI.

Era 3 — Self-service BI (2010-2020): La democratització del BI. Eines com Tableau (2003), QlikView i Power BI (2015) van posar el poder d'anàlisi directament a les mans dels analistes de negoci, sense necessitat de TI per a cada consulta. L'usuari podia arrossegar i deixar anar dimensions i mètriques per a crear les seves pròpies visualitzacions.

Era 4 — AI-augmented BI (2020-2024): La intel·ligència artificial entra al BI: detecció automàtica d'anomalies, forecasting integrat, generació automàtica d'insights ("les vendes del Q3 han caigut un 12% respecte al Q3 de l'any passat, principalment per la reducció en la categoria Electrònica"). Eines: Power BI amb Copilot, Tableau Pulse, ThoughtSpot.

Era 5 — Conversational BI (2024-2025): El BI basat en llenguatge natural. L'usuari pot preguntar en català (o qualsevol idioma): "Quines categories han crescut més aquest mes respecte al mes anterior?" i el sistema genera automàticament la visualització correcta. Eines: Tableau Pulse, ThoughtSpot Sage, Microsoft Fabric amb Copilot.

1.2 Comparativa d'eines BI 2025

Eina Model Ideal per Punts forts
Power BI Llicència Empreses Microsoft Integració Office 365, DAX potent, Copilot
Tableau Llicència Enterprise, analistes avançats Visualitzacions, comunitat, Tableau Pulse
Looker Llicència Google Cloud LookML, semantic layer, API-first
Metabase Open Source / Cloud Startups, equips tècnics Senzillesa, self-hosted, SQL + GUI
Apache Superset Open Source Dades en cloud Molt configurable, connector Druid/ClickHouse
Redash Open Source Equips SQL Simple, lleuger, fàcil d'integrar
DuckDB + Evidence Open Source Developers BI-as-code, Markdown + SQL

2. KDD: Knowledge Discovery in Databases

2.1 El procés KDD

El KDD (Knowledge Discovery in Databases) és el procés formal de descobriment de coneixement útil a partir de dades. Va ser formalitzat per Fayyad et al. el 1996 i continua sent el marc de referència teòric del Data Mining i el BI.

flowchart LR
    Dades[(Dades brutes)] --> Seleccio
    Seleccio[Seleccio] --> Preprocés
    Preprocés[Preprocés] --> Transformacio
    Transformacio[Transformacio] --> Mining
    Mining[Data Mining] --> Interpretacio
    Interpretacio[Interpretacio i Avaluació] --> Coneixement[(Coneixement)]

Fase 1 — Selecció: Identificar les fonts de dades rellevants per al problema. No totes les dades disponibles són útils per a una anàlisi concreta.

Fase 2 — Preprocés: Neteja de dades: gestió de valors nuls, eliminació de duplicats, correcció d'errors tipogràfics, normalització de formats de data i moneda.

Fase 3 — Transformació: Convertir les dades al format adequat per a l'anàlisi: agregacions, derivació de noves variables (edat a partir de data de naixement, marge a partir de preu i cost), codificació de variables categòriques.

Fase 4 — Data Mining: Aplicar algoritmes per a descobrir patrons: classificació, clustering, regles d'associació, detecció d'anomalies, sèries temporals.

Fase 5 — Interpretació/Avaluació: Avaluar si els patrons descoberts són útils, nous i comprensibles. Molts patrons estadísticament significatius no aporten valor real de negoci.

2.2 Comparativa KDD vs CRISP-DM vs SEMMA

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
Iteració Implícita Explícita, molt iterativa Implícita
Negoci Poc èmfasi Fort èmfasi (fase 1: comprensió del negoci) Poc èmfasi
Us Investigació Projectes d'empresa Usuaris SAS
2025 Referència teòrica Estàndard de facto Decreixent

3. Modern Data Stack 2025

3.1 Arquitectura del Modern Data Stack

El Modern Data Stack (MDS) és una arquitectura modular de dades basada en serveis cloud especialitzats, cadascun excel·lent en la seva funció:

flowchart TB
    subgraph Fonts["Fonts de Dades"]
        DB[(BBDD producció)]
        API[APIs externes]
        Sheets[Google Sheets]
        Logs[Logs aplicació]
    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["Transformació"]
        dbt[dbt]
    end

    subgraph Visualitzacio["Visualització BI"]
        Metabase[Metabase]
        Looker[Looker]
        Superset[Superset]
    end

    Fonts --> Ingesta
    Ingesta --> Emmagatzematge
    Emmagatzematge --> Transformacio
    Transformacio --> Emmagatzematge
    Emmagatzematge --> Visualitzacio

3.2 Eines principals del Modern Data Stack

Ingesta: - Fivetran: SaaS, centenars de connectors, zero manteniment. Idoni per a empreses sense equip d'enginyeria de dades. Preu elevat. - Airbyte (open-source): 300+ connectors, self-hosted gratuït. Alternativa viable a Fivetran per a equips tècnics.

Emmagatzematge: - Snowflake: Data Cloud, arquitectura separació compute/storage, pay-per-use, excel·lent rendiment per a consultes analítiques. - BigQuery: Serverless, molt ben integrat amb l'ecosistema Google, SQL estàndard, excel·lent per a grans volums. - Redshift: Opció AWS, bo per a empreses already on AWS. - DuckDB: La sorpresa de 2023-2025, veure secció 4.

Transformació: - dbt (data build tool): Estàndard absolut per a transformació. SQL + Jinja2 templates, tests, documentació, lineage automàtics. Veure secció 5.

Visualització: - Tableau, Power BI, Looker: Les opcions enterprise. - Metabase, Apache Superset, Redash: Les opcions open-source.


4. DuckDB: OLAP al teu portàtil

4.1 Què és DuckDB i per qué és revolucionari

DuckDB és un sistema de gestió de bases de dades OLAP (columnar) embegut que s'executa directament en el procés Python, R, Java o CLI, sense servidor extern. Va ser creat el 2019 a la Universitat de Delft (Països Baixos) i el 2023-2025 s'ha convertit en la solució de referència per a analítica local.

Per qué és revolucionari:

  • Zero infraestructura: No cal instal·lar cap servidor. pip install duckdb i ja pots analitzar GB de dades.
  • Velocitat: Execució vectoritzada i paral·lela, usa tots els cors del CPU. Pot analitzar 1 GB de Parquet en 1-2 segons en un portàtil modern.
  • Llegir directament fitxers: CSV, Parquet, JSON, Arrow, S3, HTTP — sense importar les dades.
  • SQL complet: Suporta Window Functions, CTEs, PIVOT, UNNEST, i extensions pròpies.
  • Integració Python/Pandas: Resultat directament com a DataFrame de Pandas o Arrow.

4.2 DuckDB en acció

import duckdb
import pandas as pd

# Connectar (en memòria, o a un fitxer persistent)
conn = duckdb.connect()

# Exemple 1: Analitzar múltiples fitxers Parquet directament (glob pattern)
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)

# Exemple 2: Llegir CSV directament (detecció automàtica de schema)
conn.execute("""
    CREATE VIEW vendes AS
    SELECT * FROM read_csv_auto('vendes_2024.csv', header=True)
""")

# Exemple 3: Consulta complexa amb Window Functions
query_avancada = """
    SELECT
        data_venda,
        categoria,
        import,
        SUM(import) OVER (
            PARTITION BY categoria
            ORDER BY data_venda
            ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
        ) as import_rolling_7dies,
        LAG(import, 365) OVER (
            PARTITION BY categoria
            ORDER BY data_venda
        ) as import_any_anterior,
        ROUND(
            (import - LAG(import, 365) OVER (PARTITION BY categoria ORDER BY data_venda))
            / NULLIF(LAG(import, 365) OVER (PARTITION BY categoria ORDER BY data_venda), 0)
            * 100,
            1
        ) as creixement_yoy_pct
    FROM read_parquet('vendes_*.parquet')
    ORDER BY categoria, data_venda
"""

df_analisi = conn.execute(query_avancada).df()

# Exemple 4: Llegir directament de S3 (sense descarregar)
# conn.execute("INSTALL httpfs; LOAD httpfs;")
# conn.execute("SET s3_region='eu-west-1';")
# df_s3 = conn.execute("SELECT * FROM read_parquet('s3://bucket/dades/*.parquet')").df()

# Exemple 5: Exportar resultats a Parquet optimitzat
conn.execute("""
    COPY (
        SELECT categoria, SUM(import) as total
        FROM read_parquet('vendes_*.parquet')
        GROUP BY categoria
    ) TO 'resum_categories.parquet' (FORMAT PARQUET, COMPRESSION ZSTD)
""")

conn.close()

4.3 DuckDB vs Spark: quan usar cadascun

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
Integració notebooks Python Senzilla (pip install) Complex (PySpark)
Temps de resposta interactiu Sublim Overhead de Spark context

5. dbt: transformació com a codi

5.1 Conceptes fonamentals

dbt (data build tool) és l'eina estàndard per a transformació de dades en el Modern Data Stack. La idea central és simple: les transformacions es defineixen com a models SQL, i dbt gestiona la compilació, l'execució, les dependències i els tests automàticament.

Conceptes clau:

  • Models: Fitxers .sql que defineixen una vista o taula materialitzada. dbt les gestiona com a dependències.
  • Seeds: Fitxers CSV petits (taules de referència, codis postals, etc.) que dbt carrega directament.
  • Tests: Validació de la qualitat de dades: not_null, unique, accepted_values, relacions referencials.
  • Snapshots: Captures SCD Tipus 2 (mantenir l'historial de canvis en registres que canvien amb el temps).
  • Macros: Reutilització de lògica SQL amb Jinja2. Equivalent a funcions en programació.
  • Sources: Definició de les taules d'origen (raw) amb metadades i tests de frescor.

5.2 Estructura del projecte dbt

dbt-sapalomera/
├── dbt_project.yml           # Configuració general
├── profiles.yml              # Connexions a BBDD
├── models/
│   ├── staging/              # Capa 1: neteja i tipus
│   │   ├── stg_vendes.sql
│   │   ├── stg_clients.sql
│   │   └── sources.yml       # Definició de fonts raw
│   ├── intermediate/         # Capa 2: combinació de dades
│   │   └── int_vendes_clients.sql
│   └── marts/                # Capa 3: lògica de negoci
│       ├── finance/
│       │   └── fct_vendes.sql
│       └── marketing/
│           └── dim_clients.sql
├── tests/                    # Tests SQL personalitzats
├── seeds/                    # CSV de referència
│   └── codis_categoria.csv
├── snapshots/                # SCD Tipus 2
│   └── scd_preus.sql
└── macros/                   # Reutilització SQL
    └── calcular_marge.sql

5.3 Exemples de models dbt

-- models/staging/stg_vendes.sql
-- Capa staging: neteja i tipus, 1-to-1 amb la taula raw

{{ config(materialized='view') }}

WITH font AS (
    SELECT * FROM {{ source('postgresql', 'vendes_raw') }}
),

netejada AS (
    SELECT
        id::INT                             AS venda_id,
        CAST(data_venda AS DATE)            AS data_venda,
        TRIM(LOWER(categoria))              AS categoria,
        producte_id::INT                    AS producte_id,
        client_id::INT                      AS client_id,
        quantitat::INT                      AS quantitat,
        ROUND(import::DECIMAL, 2)           AS import,
        ROUND(cost::DECIMAL, 2)             AS cost

    FROM font
    WHERE
        id IS NOT NULL
        AND data_venda IS NOT NULL
        AND import > 0
)

SELECT * FROM netejada
-- models/marts/finance/fct_vendes.sql
-- Capa marts: taula de fets de vendes amb mètriques calculades

{{ config(
    materialized='table',
    indexes=[{'columns': ['data_venda'], 'unique': False}]
) }}

WITH vendes AS (
    SELECT * FROM {{ ref('stg_vendes') }}
),

clients AS (
    SELECT * FROM {{ ref('dim_clients') }}
),

vendes_enriquides AS (
    SELECT
        v.venda_id,
        v.data_venda,
        DATE_TRUNC('month', v.data_venda)   AS mes_venda,
        DATE_PART('year', v.data_venda)     AS any_venda,
        v.categoria,
        v.producte_id,
        v.client_id,
        c.segment                           AS segment_client,
        c.pais,
        v.quantitat,
        v.import,
        v.cost,
        ROUND(v.import - v.cost, 2)         AS marge_brut,
        ROUND((v.import - v.cost) / NULLIF(v.import, 0) * 100, 1) AS marge_pct
    FROM vendes v
    LEFT JOIN clients c ON v.client_id = c.client_id
)

SELECT * FROM vendes_enriquides

5.4 Tests automàtics dbt

# models/marts/finance/schema.yml
version: 2

models:
  - name: fct_vendes
    description: "Taula de fets de vendes amb mètriques calculades"
    columns:
      - name: venda_id
        description: "Identificador únic de la venda"
        tests:
          - not_null
          - unique

      - name: data_venda
        tests:
          - not_null

      - name: import
        tests:
          - not_null
          - dbt_utils.expression_is_true:
              expression: ">= 0"

      - name: segment_client
        tests:
          - accepted_values:
              values: ['Premium', 'Estàndard', 'Bàsic']

      - name: producte_id
        tests:
          - not_null
          - relationships:
              to: ref('dim_productes')
              field: producte_id

5.5 Comandes principals dbt

# Compilar i executar tots els models
dbt run

# Executar només la capa marts
dbt run --select marts.*

# Executar tests de qualitat
dbt test

# Generar documentació (obre al navegador)
dbt docs generate && dbt docs serve

# Executar model i tots els seus dependents (descendents)
dbt run --select stg_vendes+

# Executar model i tots els seus ancestres (parents)
dbt run --select +fct_vendes

# Fer un dry-run per veure el SQL compilat
dbt compile --select fct_vendes

6. Metabase Open Source

6.1 Introducció i desplegament

Metabase és l'eina de BI open-source més popular (50.000+ estreles a GitHub). Destaca per la seva usabilitat radical: un usuari no tècnic pot crear preguntes i dashboards en minuts sense escriure una sola línia de SQL.

# Desplegament ràpid amb Docker (base de dades H2 interna, per a proves)
docker run -p 3000:3000 metabase/metabase:v0.50.21

# Desplegament de producció amb PostgreSQL com a metabase backend
docker run -p 3000:3000 \
  -e MB_DB_TYPE=postgres \
  -e MB_DB_HOST=postgres \
  -e MB_DB_PORT=5432 \
  -e MB_DB_DBNAME=metabase \
  -e MB_DB_USER=metabase_user \
  -e MB_DB_PASS=iabd2025 \
  metabase/metabase:v0.50.21

6.2 Tipus de preguntes a Metabase

Simple Questions (GUI): Selecciona una taula, aplica filtres, agrupa per dimensions i tria una visualització. Zero SQL. Ideal per a analistes de negoci no tècnics.

Custom Questions: Constructor de consultes visual avançat. Permet joins, múltiples filtrres, expressions calculades.

SQL Queries: Editor SQL complet amb autocompletació, suport per a variables dinàmiques ([[WHERE categoria = {{categoria}}]]) i caches configurables.

-- Exemple SQL a Metabase amb variable dinàmica
SELECT
    DATE_TRUNC('month', data_venda) as mes,
    categoria,
    SUM(import) as total_vendes,
    COUNT(DISTINCT client_id) as clients_unics,
    AVG(import) as tiquet_mitja
FROM vendes
WHERE
    data_venda >= {{data_inici}}
    AND data_venda <= {{data_fi}}
    [[AND categoria = {{categoria}}]]
GROUP BY 1, 2
ORDER BY 1, 3 DESC

6.3 Dashboards i subscripcions

Dashboards a Metabase:

  1. Crear un nou dashboard: + New → Dashboard
  2. Afegir preguntes existents o crear-ne de noves directament
  3. Filtres de dashboard: Vincular un filtre de data a totes les preguntes que tenen un camp de data
  4. Drill-through: Clicar sobre un punt del gràfic per a veure el detall
  5. Accions: (Metabase Pro) Executar accions SQL en clicar

Subscripcions automàtiques:

  1. Obrir el dashboard
  2. Clicar a la icona d'enviament (sobre)
  3. Dashboard subscriptions → Email subscription
  4. Freqüència: diària, setmanal, mensual
  5. Hora d'enviament i destinataris

6.4 Comparativa Metabase vs Superset vs Redash

Criteri Metabase Apache Superset Redash
Facilitat d'ús Excel·lent (no tècnics) Mitja (requereix SQL) Bona (SQL-first)
GUI sense SQL Si, molt complet Parcial Limitat
Dashboards Molt bons Excel·lents (Echarts) Bons
Connectors 50+ 40+ 30+
Alertes natives Si (pro) Si Si
Gestió multi-tenant Si (pro) Si Limitat
Self-hosted Si (gratuït) Si (gratuït) Si (gratuït)
Rendiment Bo Excel·lent (cachés) Bo
Comunitat Molt activa Activa (Airbnb/Preset) Moderada

7. AI-augmented BI el 2025

7.1 Power BI Copilot

Microsoft Power BI Copilot (integrat a Microsoft Fabric) permet generar mesures DAX i visualitzacions en llenguatge natural:

  • "Crea una mesura que calculi el creixement any a any per categoria"
  • Copilot genera el DAX: YoY Growth = DIVIDE([Sales Current Year] - [Sales Prior Year], [Sales Prior Year])
  • "Afegeix un gràfic de tendències de vendes mensuals per als darrers 2 anys"
  • Copilot crea el visual automàticament

Fabric Copilot va més lluny: pot generar pipelines de dades complets a partir d'una descripció en prosa.

7.2 Tableau Pulse

Tableau Pulse és la funcionalitat d'IA de Tableau que genera automàticament Insights personalitzats per a cada usuari:

  • Detecta anomalies en les mètriques que l'usuari segueix
  • Genera explicacions en llenguatge natural: "Les vendes de novembre han baixat un 8% respecte a l'octubre. El principal factor és la categoria 'Electrònica', que ha caigut un 15%."
  • Envia resums automàtics per email o Slack

7.3 ThoughtSpot: search-based analytics

ThoughtSpot és una plataforma BI radicalment diferent: l'usuari cerca en comptes de navegar. Tipus Google Analytics però per a les dades de l'empresa:

  • Escriu: "vendes per categoria el darrer trimestre ordenat per creixement"
  • ThoughtSpot interpreta la consulta, la executa i presenta els resultats
  • SpotIQ: Algoritme d'IA que analitza automàticament totes les mètriques i genera insights proactius

7.4 Looker Studio + Gemini

Looker Studio (ex Google Data Studio, ara integrat a Google Cloud) incorpora Gemini per a:

  • Generar automàticament resums de dashboards
  • Recomanar visualitzacions basades en el tipus de dades
  • Detectar tendències i anomalies

8. Models d'Intel·ligència de Negoci

8.1 Star Schema (Esquema Estrella)

L'Esquema Estrella és el model dimensional clàssic per a Data Warehouses. Consta d'una taula de fets central (mesures quantitatives) envoltada de taules de dimensions (context descriptiu).

erDiagram
    FCT_VENDES {
        int venda_id PK
        int data_id FK
        int producte_id FK
        int client_id FK
        int botiga_id FK
        decimal import
        int quantitat
        decimal marge
    }
    DIM_DATA {
        int data_id PK
        date data
        int any
        int mes
        string nom_mes
        string trimestre
        boolean es_laborable
    }
    DIM_PRODUCTE {
        int producte_id PK
        string nom
        string categoria
        string subcategoria
        decimal preu
    }
    DIM_CLIENT {
        int client_id PK
        string nom
        string segment
        string pais
        string ciutat
    }

    FCT_VENDES }o--|| DIM_DATA : "data_id"
    FCT_VENDES }o--|| DIM_PRODUCTE : "producte_id"
    FCT_VENDES }o--|| DIM_CLIENT : "client_id"

Avantatges: Consultes simples i ràpides (pocs JOINs), fàcil d'entendre per als usuaris BI, excel·lent per a OLAP.

8.2 Data Vault 2.0

El Data Vault 2.0 és una metodologia de modelat pensada per a la auditabilitat i traçabilitat de les dades. Molt usada en sectors regulats (banca, assegurances, sanitat).

Components:

  • Hubs: Claus de negoci úniques (Hub_Client, Hub_Producte). La identitat.
  • Links: Relacions entre hubs (Link_Venda_Client_Producte). Les transaccions.
  • Satellites: Atributs descriptius amb historial temporal (Sat_Client_Dades, Sat_Producte_Preu). El context.

Avantatges: Permet recarregar dades sense pèrdua, historial complet de tots els canvis, fàcil d'afegir noves fonts sense redissenyar el model.

Desavantatges: Més complex, requereix més JOINs, necessita eines especialitzades (dbt-vault, WhereScape).

8.3 One Big Table

El One Big Table (OBT) és l'enfoc oposat: tot en una sola taula desnormalitzada, amb totes les dimensions ja joinades. Herètic des del punt de vista tradicional, però molt pràctic amb DuckDB o Parquet:

-- Una sola taula amb tot desnormalitzat
SELECT
    v.data_venda,
    v.import,
    p.nom AS producte_nom,
    p.categoria,
    c.nom AS client_nom,
    c.segment,
    c.pais
FROM vendes v
JOIN productes p ON v.producte_id = p.id
JOIN clients c ON v.client_id = c.id

Quan usar OBT: Analítica simple sobre un domini únic, equips petits, DuckDB local, prototips ràpids. No adequat per a múltiples dominis de negoci ni per a auditabilitat.


9. Implantació d'un sistema BI

9.1 Fases del projecte BI

Fase 1 — Descobriment (2-4 setmanes): Entrevistes amb stakeholders, inventari de fonts de dades, definició de KPIs crítics, avaluació de qualitat de dades actuals.

Fase 2 — Disseny (2-3 setmanes): Arquitectura del Modern Data Stack, model de dades (star schema o Data Vault), prototip de dashboards (maquetes estàtiques), definició de SLAs del pipeline.

Fase 3 — Construcció (4-12 setmanes): Implementació dels connectors d'ingestió, models dbt, dashboards inicials, tests de qualitat de dades.

Fase 4 — Validació (2-4 setmanes): Pilot amb usuaris clau, validació de les xifres amb comptabilitat/operacions, ajustaments de les visualitzacions.

Fase 5 — Formació i adopció (contínua): Formació d'usuaris, documentació dels dashboards, creació d'una comunitat d'usuaris BI, iteració basada en feedback.

9.2 Change Management en projectes BI

La causa principal del fracàs dels projectes BI no és tècnica: és la resistència al canvi. Les persones que portaven anys generant informes manualment a Excel poden veure el nou sistema com una amenaça.

Estratègies clau:

  • Involucrar els usuaris des del principi: Que les persones que usaran el sistema participin en el disseny dels dashboards
  • Quick wins visibles: Publicar el primer dashboard funcional en 2-3 setmanes per a generar entusiasme
  • Champions interns: Identificar entusiastes a cada departament que actuïn com a formadors i evangelistes
  • Mantenir l'Excel temporalment: No eliminar bruscament els informes Excel fins que el nou sistema sigui de confiança total

10. ROI del BI

10.1 Com mesurar el valor

El ROI (Return on Investment) del BI és difícil de calcular directament, però hi ha mètodes pràctics:

Temps estalviat: Quantifica les hores humanes estalviades en generació manual d'informes. Si un equip de 5 persones estalvia 4 hores setmanals cadascuna, en un any són 1.040 hores × cost/hora = valor tangible.

Velocitat de decisió: Mesurar el temps entre que es genera una dada i que es pren una decisió basada en ella. Reduir de dies a hores té un valor competitiu mesurable.

Reducció d'errors: Incidents deguts a decisions basades en dades incorrectes o desactualitzades. Un sol incident evitat pot pagar tota la infraestructura BI anual.

10.2 Casos d'èxit reals

Zara (Inditex): El sistema BI de Zara permet als seus compradors veure en temps real quins productes s'estan venent a quines botigues. Cada dimecres i divendres, els responsables de botiga fan comandes basades en dades de vendes de les darreres 48 hores. Resultat: el cicle disseny-producció-botiga de 2 setmanes, versus les 6 setmanes de la competència.

Mercadona: El sistema de previsió de demanda de Mercadona analitza dades de vendes, meteorologia, calendari festiu i tendències estacionals per a optimitzar les comandes als proveïdors i minimitzar les ruptures d'estoc. Redueix el malbaratament alimentari en un 20%.

SEAT (Volkswagen Group): La plataforma de BI de SEAT integra dades de producció, qualitat, logística i vendes. El dashboard en temps real de la línia de producció permet identificar colls d'ampolla en minuts i ajustar la planificació de la producció del dia. Reducció del 15% en aturades de línia no planificades.


11. Pipeline BI complet

flowchart LR
    subgraph Fonts["Fonts de Dades"]
        ERP[ERP SAP]
        CRM[CRM Salesforce]
        Web[Analytics Web]
        IoT[Sensors IoT]
    end

    subgraph Ingesta["Ingesta"]
        Airbyte[Airbyte]
        Kafka[Kafka Streams]
    end

    subgraph Lake["Data Lake"]
        S3[S3 Bucket Raw]
    end

    subgraph Warehouse["Data Warehouse"]
        Snowflake[Snowflake]
    end

    subgraph Transform["Transformació"]
        dbt[dbt Models]
    end

    subgraph Marts["Data Marts"]
        Finance[Finance Mart]
        Marketing[Marketing Mart]
        Operations[Operations Mart]
    end

    subgraph BI["Visualitzacio BI"]
        Metabase[Metabase]
        PowerBI[Power BI]
    end

    Fonts --> Ingesta
    Ingesta --> Lake
    Lake --> Snowflake
    Snowflake --> dbt
    dbt --> Marts
    Marts --> BI

Miniactivitat

Crea una pregunta SQL a Metabase que mostri el top 5 de categories per vendes del darrer mes, amb el percentatge sobre el total.

Passos: 1. Despliega Metabase amb docker run -p 3000:3000 metabase/metabase:v0.50.21 2. Configura la connexió a la base de dades PostgreSQL 3. Crea una nova pregunta SQL amb la consulta:

SELECT
    categoria,
    SUM(import) as total,
    ROUND(SUM(import) / SUM(SUM(import)) OVER () * 100, 1) as percentatge
FROM vendes
WHERE data_venda >= DATE_TRUNC('month', CURRENT_DATE)
GROUP BY categoria
ORDER BY total DESC
LIMIT 5
4. Visualitza com a bar chart horitzontal 5. Afegeix al dashboard "Resum Executiu"


Exercici pràctic: Dashboard BI complet amb Metabase

Objectiu: Crear un dashboard de BI professional amb Metabase i PostgreSQL usant dades d'una empresa fictícia de venda online.

Pas 1: Desplega l'entorn (docker-compose del fitxer practiques/practica_bi.md):

docker compose up -d
# Esperar 2-3 minuts fins que Metabase estigui llest

Pas 2: Accedeix a Metabase (http://localhost:3000) i fes la configuració inicial:

  • Email admin: joan.garcia@sapalomera.cat
  • Nom de l'empresa: "TecnoShop - Institut Sa Palomera"
  • Connecta la base de dades PostgreSQL

Pas 3: Crea les preguntes següents (mínim 6):

  1. Vendes mensuals (línia temporal, darrers 12 mesos)
  2. Top 10 productes (barra horitzontal)
  3. Vendes per segment de client (pastís)
  4. Mapa de vendes per país (mapa)
  5. KPI: Total vendes del mes (número gran)
  6. Comparativa any actual vs any anterior (barra agrupada)

Pas 4: Crea el dashboard "TecnoShop - [el teu nom]" amb les 6 visualitzacions.

Pas 5: Afegeix filtres de dashboard:

  • Filtre de data → connectar a totes les visualitzacions
  • Filtre de categoria → connectar a les visualitzacions rellevants

Lliurament: Captura de pantalla del dashboard complet amb el teu nom visible en el títol.