Analítica y visualización

"Los datos crudos no toman decisiones. Los gráficos bien diseñados sí."

Qué vas a aprender en este capítulo

Construimos pipelines, almacenamos datos, los procesamos. Pero todo eso es para una sola cosa: tomar mejores decisiones. Este capítulo cubre cómo: BI, dashboards, KPIs, y las bases de ML en producción.


5.1 KPIs y métricas que importan

💡 Intuición

Los datos por sí solos son ruido. Los KPIs (Key Performance Indicators) son las métricas que realmente determinan si el negocio está funcionando.

Una empresa con 50 dashboards y 200 métricas suele tener menos claridad que una con 5 KPIs claros y 1 dashboard ejecutivo bien diseñado.

📐 Fundamento

Tipos de métricas:

Tipo Pregunta Ejemplo
Vanity metric "¿Suena bien?" Número total de usuarios registrados
Actionable metric "¿Te dice qué hacer?" DAU/MAU ratio, conversion rate por canal

KPIs típicos por tipo de negocio:

E-commerce / SaaS:

  • MRR (Monthly Recurring Revenue).
  • CAC (Customer Acquisition Cost).
  • LTV (Customer Lifetime Value).
  • Churn rate (% que cancela cada mes).
  • NPS (Net Promoter Score).
  • DAU/MAU (Daily Active Users / Monthly Active Users).

La Esquina Cloud (delivery):

KPI Cálculo Por qué importa
Tiempo promedio de entrega AVG(fecha_entrega - fecha_pedido) Satisfacción del cliente
Tasa de cancelación cancelados / total Operacional
Ticket promedio revenue / num_pedidos Estrategia de pricing
Conversion rate (visita → pedido) pedidos / sesiones Eficacia del funnel
Repeat customer rate clientes_recurrentes / total_clientes Retención
Hora pico vs valle pedidos_hora_pico / pedidos_hora_valle Staffing
Margen por platillo (precio - costo) / precio Rentabilidad

North Star Metric:

Una métrica única que captura el valor que tu producto entrega.

  • Spotify: tiempo escuchado.
  • Airbnb: noches reservadas.
  • La Esquina Cloud: pedidos completados con éxito.

Toda la organización se alinea en torno a mover esa métrica.

Funnel analysis — el viaje del usuario:

Visitas al sitio:    100,000
        ↓ 30% conversion
Carrito creado:       30,000
        ↓ 60% conversion
Iniciar checkout:     18,000
        ↓ 80% conversion
Pedido completado:    14,400

Tasa de conversión total: 14.4%
Mayor caída: visitas → carrito (70% pérdida)
→ Ahí está la oportunidad de mejora

5.2 Dashboards efectivos

📐 Fundamento

Principios (Edward Tufte, Stephen Few):

  1. Maximizar el data-ink ratio: quitar todo lo decorativo (fondos, sombras, gradientes innecesarios).
  2. El gráfico correcto para el dato correcto.
  3. No usar 3D (distorsiona percepción).
  4. Usar color con propósito, no decoración.
  5. Permitir comparación (mismo eje, mismo scaling).

Elegir el gráfico correcto:

Quiero mostrar... Usar
Tendencia en el tiempo Línea
Composición (% de un total) Barras apiladas (NO pie)
Comparación entre categorías Barras horizontales
Distribución Histograma, box plot
Relación entre 2 variables Scatter plot
Geográfico Mapa
KPI individual destacado Big number con sparkline

Gráficos a evitar:

  • Pie charts con > 5 categorías — el ojo no compara ángulos bien.
  • 3D anything — sesga la percepción.
  • Gradientes y sombras — solo distraen.
  • Demasiados colores — usar máx 4-5.

Layout de un dashboard ejecutivo:

┌─────────────────────────────────────────────────┐
│  Título  •  Período: Mayo 2026  •  [Filtros]    │
├──────────┬──────────┬──────────┬────────────────┤
│  KPI 1   │  KPI 2   │  KPI 3   │  KPI 4         │   ← Big numbers
│  $50K    │  1,240   │  18.5min │  4.7/5         │
│  ↑ +12%  │  ↓ -3%   │  ↓ -2min │  ↑ +0.2        │
├──────────┴──────────┴──────────┴────────────────┤
│  [Gráfico principal: tendencia 30 días]         │   ← Story principal
├──────────────────────┬──────────────────────────┤
│  [Top platillos]     │  [Mapa de zonas]         │   ← Detalles
└──────────────────────┴──────────────────────────┘

5.3 Herramientas de BI

📐 Fundamento

Comparación de plataformas BI:

Tool Tipo Pros Cons
Tableau Comercial Muy poderoso, drag-and-drop Caro, curva de aprendizaje
Looker Comercial (Google) LookML para modelado, embedded Caro
Power BI Comercial (Microsoft) Integración Office, asequible Mejor en stack Microsoft
Metabase Open source Setup en minutos, UI amigable Menos features avanzados
Superset Open source (Apache) Muy customizable Más técnico
Grafana Open source Excelente para métricas/series tiempo No para BI tradicional

Setup de Metabase:

# Docker quick start
docker run -d -p 3000:3000 \
    -v metabase-data:/metabase.db \
    --name metabase metabase/metabase

Después: ir a http://localhost:3000, conectar a tu warehouse (PostgreSQL, BigQuery, etc.), y empezar a crear dashboards arrastrando.

Embedded analytics:

En lugar de un dashboard separado, embeber gráficos dentro de tu propia app.

// Embeber un dashboard de Metabase en tu app
import jwt from 'jsonwebtoken';

const payload = {
  resource: { dashboard: 1 },
  params: { user_id: currentUser.id }
};
const token = jwt.sign(payload, METABASE_SECRET, { expiresIn: '10m' });
const url = `https://metabase.la-esquina.com/embed/dashboard/${token}#bordered=true&titled=false`;

return <iframe src={url} width="100%" height="600" />;

Metabase, Looker, Mode, Holistics — todos soportan embedding.


5.4 Storytelling con datos

📐 Fundamento

Un dashboard no es para "mostrar datos" — es para contar una historia.

Estructura típica de presentación de datos:

  1. Contexto: ¿de qué hablamos? Período, métrica.
  2. Resultado: ¿qué pasó? Magnitud y dirección del cambio.
  3. Comparación: ¿vs qué? Mes pasado, año pasado, objetivo.
  4. Causa: ¿por qué? Drill-down a las dimensiones que explican.
  5. Acción: ¿qué hacemos? Recomendación concreta.

Ejemplo MAL:

"Las ventas en mayo fueron $50,000."

Ejemplo BIEN:

"Las ventas en mayo fueron $50,000, +12% vs abril y +25% vs mayo del año pasado, superando el objetivo del trimestre. El crecimiento vino principalmente de la categoría 'pupusas especiales' (+45% YoY) impulsada por la campaña de Día de la Madre. Recomendación: repetir la campaña en septiembre para Día del Padre."

Pirámide invertida (técnica de periodismo):

Conclusión más importante      ← arriba (first impression)
        ↓
Datos de apoyo
        ↓
Detalles, metodología          ← abajo (para quien quiera profundizar)

Anti-patrones comunes:

  • Cherry picking: elegir el período/comparación que apoya tu narrativa preexistente.
  • Eje truncado: el eje Y empieza en 50 en lugar de 0 → exagera diferencias.
  • Correlation = causation: "las ventas subieron cuando lanzamos X" — pero hubo 5 cosas más que cambiaron.
  • Sin baseline: "1000 usuarios nuevos" — ¿es bueno o malo? Sin contexto no significa nada.

5.5 ML en producción — MLOps

📐 Fundamento

Ciclo de vida de un modelo ML:

[Datos]
   ↓
[Feature engineering]
   ↓
[Training]
   ↓
[Evaluación]                    ← Modelo entrenado
   ↓
[Deploy]                        ← API que sirve predicciones
   ↓
[Monitoreo]
   ↓
[Retraining]                    ← cuando degrada
   ↺

MLOps = DevOps + ML:

Aplicar prácticas de DevOps (CI/CD, IaC, monitoreo) al ML.

Componentes típicos:

Componente Herramientas
Feature Store Feast, Tecton, Sagemaker Feature Store
Experiment Tracking MLflow, Weights & Biases
Model Registry MLflow, Sagemaker
Training Pipeline Kubeflow, Sagemaker Pipelines, Vertex AI
Serving Sagemaker Endpoints, TorchServe, Triton
Monitoring Arize, Fiddler, Evidently

Patrón: Feature Store:

Centraliza los features para que sean consistentes entre training y serving.

# Definir feature
@on_demand_feature_view(...)
def hora_del_dia():
    return ...

# Training: leer del feature store
training_df = feature_store.get_historical_features(...).to_df()
modelo.fit(training_df)

# Serving: leer del mismo feature store
features = feature_store.get_online_features(...)
prediccion = modelo.predict(features)

Sin feature store: training usa una versión, serving otra → "training-serving skew" → modelo da resultados peores en producción.

Drift detection — el modelo se degrada:

# Comparar la distribución de features en producción vs training
from scipy.stats import ks_2samp

stat, p_value = ks_2samp(features_training, features_production)
if p_value < 0.05:
    alert("Distribution shift detected: retrain model")

Causas comunes de degradación:

  • Data drift: la distribución de inputs cambió (nuevos comportamientos de clientes).
  • Concept drift: la relación input → output cambió (cambió el contexto del negocio).
  • Adversarial drift: atacantes adaptan su comportamiento.

🛠️ En la práctica

La Esquina Cloud — modelo de predicción de demanda:

# 1. Feature engineering (en dbt o Spark)
# Por hora y por local: pedidos historicos, día de la semana, feriados, clima

# 2. Training
import xgboost as xgb
import mlflow

with mlflow.start_run():
    modelo = xgb.XGBRegressor(n_estimators=500, max_depth=6)
    modelo.fit(X_train, y_train)
    
    # Loggear hiperparámetros, métricas, modelo
    mlflow.log_params(modelo.get_params())
    mlflow.log_metric("mae", mae(y_test, modelo.predict(X_test)))
    mlflow.xgboost.log_model(modelo, "modelo_demanda")

# 3. Promote a producción
mlflow.register_model(
    f"runs:/{run_id}/modelo_demanda",
    "demanda_local_hora"
)

# 4. Serving (FastAPI)
@app.get("/predecir/demanda")
def predecir(local_id: int, hora_objetivo: datetime):
    features = feature_store.get_online_features(
        entity_rows=[{"local_id": local_id, "hora": hora_objetivo}]
    )
    prediccion = modelo.predict(features)
    return {"pedidos_estimados": int(prediccion[0])}

# 5. Monitoreo continuo
@app.middleware("http")
async def log_predictions(request, call_next):
    response = await call_next(request)
    if request.url.path == "/predecir/demanda":
        # Loggear input y output a una BD para análisis posterior
        log_to_warehouse({...})
    return response

# 6. Retraining automático con Airflow (mensual)
# DAG que: extrae datos nuevos, retrainea, evalua, si mejora → promueve a producción

5.6 Cierre del libro

Este libro recorrió el ecosistema de Big Data y Analítica:

  1. Fundamentos — las 5 V's, OLTP vs OLAP, modern data stack.
  2. Hadoop y Spark — procesamiento distribuido masivo.
  3. Data Warehouses y Lakes — modelado dimensional, dbt, BigQuery/Snowflake.
  4. Streaming y Kafka — datos en tiempo real, ventanas, exactly-once.
  5. Analítica y visualización — KPIs, dashboards, MLOps.

La habilidad de extraer valor de los datos a escala es una de las capacidades más valoradas hoy. Las empresas que saben hacerlo dominan; las que no, son commodities.


5.7 Ejercicios

✏️ Ejercicio 5.1 — Diseñar dashboard ejecutivo

Diseñá el dashboard ejecutivo principal para el dueño de La Esquina Cloud. Tiene 30 segundos para revisarlo cada mañana.

Incluí:

  • Los 4 KPIs más importantes (con comparaciones).
  • 1 gráfico principal (¿qué historia cuenta?).
  • 2 detalles secundarios.
  • Una "alerta" si algo está mal.

5.8 Para profundizar

5.X Mini-proyecto integrador

🏗️ Proyecto final — Pipeline de datos punta a punta

Alcance: construí un pipeline analítico completo para un dataset público (NYC Taxi, GitHub Archive, datos del Banco Mundial — todos gratis).

Entregables:

  1. Ingesta — descargar 1-10 GB en data lake (S3/MinIO local). Formato Parquet (cap. 1, cap. 3).
  2. Transformación — Spark notebook que agrega y enriquece (cap. 2).
  3. Modelo dimensional — fact + dimensiones en DuckDB o Postgres (cap. 3).
  4. Streaming opcional — Kafka local con un productor que simula nuevos eventos cada minuto (cap. 4).
  5. Dashboard — 3-5 KPIs con Metabase, Superset o Streamlit; al menos uno con drill-down (cap. 5).
  6. README con la arquitectura en una imagen + instrucciones para reproducirlo en otra máquina.

Criterio de éxito: un compañero clona el repo, corre make up, y ve el dashboard en menos de 15 minutos.

Tiempo estimado: 3-4 semanas. Es el proyecto más extenso de los 24 libros — y el que más se parece al trabajo de un Data Engineer junior.


Definiciones nuevas: KPI, vanity metric, actionable metric, North Star Metric, MRR, CAC, LTV, churn, DAU/MAU, funnel analysis, data-ink ratio, embedded analytics, MLOps, feature store, training-serving skew, data drift, concept drift, MLflow, Feast.