Construyendo el dashboard paso a paso
Implementación guiada del dashboard de marketing.
Ahora que dominas las métricas clave de marketing, es momento de construir un dashboard profesional en Power BI. En esta lección crearemos un dashboard completo con modelo de datos optimizado, medidas DAX robustas y visualizaciones efectivas.
Vista Previa del Dashboard Final
Antes de comenzar, veamos qué construiremos:
┌─────────────────────────────────────────────────────────────────────────────┐
│ DASHBOARD DE MARKETING DIGITAL │
│ Período: [Ene 2026 ▼] Canal: [Todos ▼] Campaña: [Todas ▼] │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ GASTO │ │ ROAS │ │ CAC │ │ CLIENTES │ │
│ │ $125.4K │ │ 4.2:1 │ │ $278 │ │ 451 │ │
│ │ ▲ +12% │ │ ▲ +0.3 │ │ ▼ -8% │ │ ▲ +18% │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────┐ ┌────────────────────────────────────┐ │
│ │ FUNNEL DE CONVERSIÓN │ │ RENDIMIENTO POR CANAL │ │
│ │ │ │ │ │
│ │ ████████████████████ 2.5M │ │ Google ████████████ $52K 4.5:1 │ │
│ │ Impresiones │ │ Meta ██████████ $41K 3.8:1 │ │
│ │ │ │ LinkedIn ████ $18K 2.9:1 │ │
│ │ █████████████ 45K │ │ Email █████ $14K 6.2:1 │ │
│ │ Clics (1.8% CTR) │ │ │ │
│ │ │ │ │ │
│ │ ██████ 1.8K │ │ │ │
│ │ Leads (4% conv) │ │ │ │
│ │ │ │ │ │
│ │ ██ 451 │ │ │ │
│ │ Clientes (25% conv) │ │ │ │
│ └──────────────────────────────┘ └────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ TENDENCIA DE ROAS Y GASTO │ │
│ │ Gasto ▬▬▬ ROAS --- │ │
│ │ │ │
│ │ ╭──╮ ╭───╮ │ │
│ │ ╭───╯ ╰───╮ ╭───╯ ╰──╮ │ │
│ │ ──╯ ╰───────────╯ ╰─── │ │
│ │ Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Parte 1: Modelo de Datos para Marketing
Un buen dashboard comienza con un modelo de datos bien estructurado.
Estructura de Tablas
Para marketing analytics necesitamos estas tablas principales:
┌──────────────┐
│ Calendario │
│ (Dim_Fecha) │
└──────┬───────┘
│
│ 1:N
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Canales │◄───│ Campañas │───►│ Costos │
│ (Dim_Canal) │ │(Fact_Métricas)│ │ Operativos │
└──────────────┘ └──────┬───────┘ └──────────────┘
│
│ 1:N
▼
┌──────────────┐
│ Funnel │
│ (Fact_Funnel)│
└──────────────┘
Tabla 1: Dim_Calendario
La tabla de calendario es esencial para análisis temporales.
// Código Power Query para crear tabla de calendario
let
FechaInicio = #date(2024, 1, 1),
FechaFin = #date(2026, 12, 31),
Duracion = Duration.Days(FechaFin - FechaInicio) + 1,
ListaFechas = List.Dates(FechaInicio, Duracion, #duration(1, 0, 0, 0)),
TablaFechas = Table.FromList(ListaFechas, Splitter.SplitByNothing(), {"Fecha"}),
TipoCambiado = Table.TransformColumnTypes(TablaFechas, {{"Fecha", type date}}),
AgregarAño = Table.AddColumn(TipoCambiado, "Año", each Date.Year([Fecha]), Int64.Type),
AgregarMes = Table.AddColumn(AgregarAño, "Mes", each Date.Month([Fecha]), Int64.Type),
AgregarNombreMes = Table.AddColumn(AgregarMes, "Nombre_Mes",
each Date.ToText([Fecha], "MMMM", "es-ES"), type text),
AgregarTrimestre = Table.AddColumn(AgregarNombreMes, "Trimestre",
each "Q" & Text.From(Date.QuarterOfYear([Fecha])), type text),
AgregarSemana = Table.AddColumn(AgregarTrimestre, "Semana",
each Date.WeekOfYear([Fecha]), Int64.Type),
AgregarAñoMes = Table.AddColumn(AgregarSemana, "Año_Mes",
each Date.ToText([Fecha], "yyyy-MM"), type text)
in
AgregarAñoMes
Tabla 2: Dim_Canal
Define los canales de marketing:
| Canal_ID | Canal | Categoria | Tipo |
|---|---|---|---|
| 1 | Google Ads - Search | Paid Search | Pagado |
| 2 | Google Ads - Display | Display | Pagado |
| 3 | Facebook Ads | Social Paid | Pagado |
| 4 | Instagram Ads | Social Paid | Pagado |
| 5 | LinkedIn Ads | Social Paid | Pagado |
| 6 | Email Marketing | Propio | |
| 7 | Orgánico Google | SEO | Orgánico |
| 8 | Referidos | Referral | Orgánico |
Tabla 3: Fact_Metricas_Campañas
La tabla principal con datos diarios de campañas:
| Fecha | Canal_ID | Campaña | Impresiones | Clics | Gasto | Leads | Clientes | Ingresos |
|---|---|---|---|---|---|---|---|---|
| 2026-01-01 | 1 | Black Friday | 125000 | 2500 | 1250 | 75 | 8 | 4800 |
| 2026-01-01 | 3 | Retargeting | 85000 | 1200 | 600 | 45 | 5 | 2750 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
Tabla 4: Fact_Funnel (opcional pero recomendada)
Para análisis detallado del embudo:
| Fecha | Canal_ID | Etapa | Cantidad |
|---|---|---|---|
| 2026-01-01 | 1 | Visitas | 2500 |
| 2026-01-01 | 1 | Leads | 75 |
| 2026-01-01 | 1 | MQLs | 30 |
| 2026-01-01 | 1 | SQLs | 15 |
| 2026-01-01 | 1 | Oportunidades | 10 |
| 2026-01-01 | 1 | Clientes | 8 |
Configurar Relaciones
En Power BI, establece estas relaciones:
- Dim_Calendario[Fecha] → Fact_Metricas[Fecha] (1:N)
- Dim_Canal[Canal_ID] → Fact_Metricas[Canal_ID] (1:N)
- Dim_Calendario[Fecha] → Fact_Funnel[Fecha] (1:N)
- Dim_Canal[Canal_ID] → Fact_Funnel[Canal_ID] (1:N)
Importante: Marca la tabla Dim_Calendario como "Tabla de fechas" en Power BI: Selecciona la tabla → Herramientas de tabla → Marcar como tabla de fechas.
Parte 2: Creando las Medidas DAX
Ahora crearemos todas las medidas necesarias. Organízalas en una carpeta llamada "Métricas Marketing".
Medidas Base
// Totales básicos
Total Gasto = SUM(Fact_Metricas[Gasto])
Total Impresiones = SUM(Fact_Metricas[Impresiones])
Total Clics = SUM(Fact_Metricas[Clics])
Total Leads = SUM(Fact_Metricas[Leads])
Total Clientes = SUM(Fact_Metricas[Clientes])
Total Ingresos = SUM(Fact_Metricas[Ingresos])
Métricas de Eficiencia
// CPM - Costo por Mil Impresiones
CPM =
DIVIDE(
[Total Gasto],
[Total Impresiones],
0
) * 1000
// CPC - Costo por Clic
CPC =
DIVIDE(
[Total Gasto],
[Total Clics],
0
)
// CTR - Click Through Rate
CTR =
DIVIDE(
[Total Clics],
[Total Impresiones],
0
) * 100
// CPL - Costo por Lead
CPL =
DIVIDE(
[Total Gasto],
[Total Leads],
0
)
// CAC - Costo de Adquisición de Cliente
CAC =
DIVIDE(
[Total Gasto],
[Total Clientes],
0
)
// ROAS - Return on Ad Spend
ROAS =
DIVIDE(
[Total Ingresos],
[Total Gasto],
0
)
// ROAS Texto (para mostrar como ratio)
ROAS Texto =
VAR RoasValor = [ROAS]
RETURN
FORMAT(RoasValor, "0.0") & ":1"
Métricas de Conversión
// Tasa de Conversión Clic a Lead
Tasa Click Lead =
DIVIDE(
[Total Leads],
[Total Clics],
0
) * 100
// Tasa de Conversión Lead a Cliente
Tasa Lead Cliente =
DIVIDE(
[Total Clientes],
[Total Leads],
0
) * 100
// Tasa de Conversión Total
Tasa Conversion Total =
DIVIDE(
[Total Clientes],
[Total Clics],
0
) * 100
Métricas de Comparación (vs Período Anterior)
// Gasto del período anterior (mes)
Gasto Mes Anterior =
CALCULATE(
[Total Gasto],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
// Variación de Gasto vs Mes Anterior
Variación Gasto MoM =
VAR GastoActual = [Total Gasto]
VAR GastoAnterior = [Gasto Mes Anterior]
RETURN
DIVIDE(
GastoActual - GastoAnterior,
GastoAnterior,
0
)
// ROAS del período anterior
ROAS Mes Anterior =
CALCULATE(
[ROAS],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
// Variación ROAS
Variación ROAS MoM = [ROAS] - [ROAS Mes Anterior]
// Clientes del período anterior
Clientes Mes Anterior =
CALCULATE(
[Total Clientes],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
// Variación Clientes
Variación Clientes MoM =
VAR ClientesActual = [Total Clientes]
VAR ClientesAnterior = [Clientes Mes Anterior]
RETURN
DIVIDE(
ClientesActual - ClientesAnterior,
ClientesAnterior,
0
)
Métricas Acumuladas (YTD)
// Gasto acumulado del año
Gasto YTD =
CALCULATE(
[Total Gasto],
DATESYTD(Dim_Calendario[Fecha])
)
// Ingresos acumulados del año
Ingresos YTD =
CALCULATE(
[Total Ingresos],
DATESYTD(Dim_Calendario[Fecha])
)
// ROAS acumulado del año
ROAS YTD =
DIVIDE(
[Ingresos YTD],
[Gasto YTD],
0
)
Métricas con Objetivos
// ROAS vs Target
ROAS vs Target =
VAR RoasActual = [ROAS]
VAR Target = 4 // Objetivo de ROAS 4:1
RETURN
RoasActual - Target
// Estado ROAS (para formato condicional)
Estado ROAS =
VAR Diferencia = [ROAS vs Target]
RETURN
SWITCH(
TRUE(),
Diferencia >= 1, "Excelente",
Diferencia >= 0, "En objetivo",
Diferencia >= -0.5, "Precaución",
"Crítico"
)
// CAC vs Objetivo
CAC vs Objetivo =
VAR CACActual = [CAC]
VAR Objetivo = 300 // CAC objetivo de $300
RETURN
Objetivo - CACActual // Positivo = mejor que objetivo
Parte 3: Construyendo las Visualizaciones
Sección 1: KPIs Principales (Tarjetas)
Crea 4 tarjetas en la parte superior del dashboard:
Tarjeta 1: Gasto Total
- Valor:
[Total Gasto] - Formato: Moneda, sin decimales
- Subtítulo:
[Variación Gasto MoM]con formato porcentaje
Tarjeta 2: ROAS
- Valor:
[ROAS Texto] - Color: Condicional basado en
[Estado ROAS] - Subtítulo:
[Variación ROAS MoM]
Tarjeta 3: CAC
- Valor:
[CAC] - Formato: Moneda
- Subtítulo: Comparación con mes anterior
Tarjeta 4: Clientes Nuevos
- Valor:
[Total Clientes] - Subtítulo:
[Variación Clientes MoM]con formato porcentaje
Configuración de Formato Condicional
Para el color de las tarjetas según rendimiento:
- Selecciona la tarjeta
- Formato → Valor del relleno → Formato condicional
- Basado en campo:
[Estado ROAS] - Reglas:
- "Excelente" → Verde (#2ECC71)
- "En objetivo" → Azul (#3498DB)
- "Precaución" → Amarillo (#F1C40F)
- "Crítico" → Rojo (#E74C3C)
Sección 2: Visualización del Funnel
Opción A: Gráfico de Embudo Nativo
- Inserta un visual de tipo Embudo
- Grupo: Crea una columna calculada con el orden del funnel
// Columna calculada en Fact_Funnel
Orden Etapa =
SWITCH(
Fact_Funnel[Etapa],
"Impresiones", 1,
"Clics", 2,
"Leads", 3,
"MQLs", 4,
"SQLs", 5,
"Oportunidades", 6,
"Clientes", 7,
99
)
- Valores:
SUM(Fact_Funnel[Cantidad]) - Ordenar por:
[Orden Etapa]ascendente
Opción B: Gráfico de Barras Horizontal Personalizado
Si prefieres más control visual:
- Gráfico de barras horizontal
- Eje Y: Etapa del funnel
- Eje X: Cantidad
- Ordenar por orden personalizado
- Agregar etiquetas de datos con tasa de conversión
Medida para etiqueta con tasa:
Etiqueta Funnel =
VAR Cantidad = SUM(Fact_Funnel[Cantidad])
VAR CantidadAnterior =
CALCULATE(
SUM(Fact_Funnel[Cantidad]),
FILTER(
ALL(Fact_Funnel[Etapa]),
Fact_Funnel[Orden Etapa] = MAX(Fact_Funnel[Orden Etapa]) - 1
)
)
VAR Tasa = DIVIDE(Cantidad, CantidadAnterior, 1) * 100
RETURN
FORMAT(Cantidad, "#,##0") & " (" & FORMAT(Tasa, "0.0") & "%)"
Sección 3: Rendimiento por Canal
Tabla Matriz con ROAS y Gasto
Inserta una Matriz
Filas:
Dim_Canal[Canal]Valores:
[Total Gasto][Total Clientes][ROAS][CAC]
Aplica formato condicional en la columna ROAS:
- Barras de datos
- Color según valor (verde = alto, rojo = bajo)
Gráfico de Barras Comparativo
- Gráfico de barras agrupadas
- Eje Y:
Dim_Canal[Canal] - Eje X:
[Total Gasto]y[Total Ingresos] - Leyenda para diferenciar Gasto vs Ingresos
Sección 4: Análisis de Tendencias
Gráfico Combinado: Gasto y ROAS en el Tiempo
- Inserta un Gráfico de líneas y columnas agrupadas
- Eje X compartido:
Dim_Calendario[Año_Mes] - Columnas:
[Total Gasto](eje Y izquierdo) - Línea:
[ROAS](eje Y derecho) - Configura ejes:
- Eje Y izquierdo: Moneda
- Eje Y derecho: Rango 0-8 para ROAS
Configuración del visual:
Eje X: Año_Mes (ordenado cronológicamente)
Valores de columna: Total Gasto
Valores de línea: ROAS
Eje Y secundario: Activado para ROAS
Línea de Tendencia con Pronóstico
Power BI puede agregar líneas de tendencia y pronóstico:
- Selecciona el gráfico de líneas
- Panel Análisis (icono de lupa con gráfico)
- Activa "Línea de tendencia"
- Activa "Pronóstico" (próximos 3 meses)
- Intervalo de confianza: 95%
Sección 5: Segmentadores (Filtros)
Segmentador de Período
- Inserta un segmentador
- Campo:
Dim_Calendario[Año_Mes] - Tipo: Desplegable o lista
- Título: "Período"
Segmentador de Canal
- Inserta un segmentador
- Campo:
Dim_Canal[Canal] - Tipo: Desplegable con opción "Seleccionar todo"
- Título: "Canal"
Segmentador de Campaña
- Inserta un segmentador
- Campo:
Fact_Metricas[Campaña] - Tipo: Desplegable
- Título: "Campaña"
Parte 4: Mejoras Avanzadas
Tooltips Personalizados
Crea una página de tooltip para información adicional al hacer hover:
Agrega nueva página
Tamaño de página: Información sobre herramientas (ancho 320px, alto 240px)
Agrega visuales compactos:
- Mini gráfico de tendencia de los últimos 6 meses
- Comparación MoM
- Top 3 campañas del canal
En el visual principal, configura:
- Formato → Información sobre herramientas → Página = tu página de tooltip
Detalle Drill-Through
Crea una página de detalle para profundizar en un canal:
- Nueva página llamada "Detalle Canal"
- Agrega un campo drill-through:
Dim_Canal[Canal] - Visuales en esta página:
- Tendencia histórica del canal
- Desglose por campaña
- Métricas detalladas
- Tabla de datos diarios
Bookmarks para Vistas
Crea diferentes vistas del mismo dashboard:
- Vista Ejecutiva: Solo KPIs y funnel
- Vista Detallada: Todas las visualizaciones
- Vista por Canal: Enfocada en comparación de canales
Configura botones para navegar entre vistas.
Parte 5: Layout Final y Diseño
Paleta de Colores Sugerida
| Elemento | Color | Uso |
|---|---|---|
| Fondo | #F5F7FA | Fondo del dashboard |
| Tarjetas | #FFFFFF | Fondo de visuales |
| Primario | #AE4291 | Acentos, botones (Tooldata) |
| Secundario | #35286B | Headers, títulos (Tooldata) |
| Positivo | #2ECC71 | Métricas buenas |
| Negativo | #E74C3C | Métricas malas |
| Neutro | #95A5A6 | Texto secundario |
Estructura de Página
┌────────────────────────────────────────────────────────────────┐
│ HEADER (50px) │
│ Logo + Título + Fecha de actualización │
├────────────────────────────────────────────────────────────────┤
│ FILTROS (60px) │
│ [Período ▼] [Canal ▼] [Campaña ▼] [Botones de vista] │
├──────────────┬─────────────────────────────────────────────────┤
│ KPIs │ KPIs │
│ (150px) │ 4 tarjetas horizontales │
├──────────────┴─────────────────────────────────────────────────┤
│ ┌────────────────────┐ ┌───────────────────────────────┐ │
│ │ FUNNEL │ │ CANAL PERFORMANCE │ │
│ │ (40% ancho) │ │ (60% ancho) │ │
│ │ Alto: 300px │ │ Alto: 300px │ │
│ └────────────────────┘ └───────────────────────────────┘ │
├────────────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ TENDENCIA (100% ancho, 250px alto) │ │
│ │ Gasto + ROAS en el tiempo │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
Tips de Diseño
- Alineación: Usa las guías de Power BI para alinear todos los elementos
- Espaciado: Mantén 10-15px de margen entre visuales
- Consistencia: Misma altura para visuales en la misma fila
- Jerarquía: KPIs más importantes arriba y a la izquierda
- Respiración: No sobrecargues; deja espacio en blanco
Puntos Clave de esta Lección
El modelo de datos es fundamental: Tablas de dimensiones (Calendario, Canal) y hechos (Métricas) bien relacionadas
Las medidas DAX se organizan en categorías: Base, Eficiencia, Conversión, Comparación, Acumuladas
El funnel visualiza el embudo de conversión: Desde impresiones hasta clientes
La comparación por canal identifica oportunidades: Dónde invertir más, dónde optimizar
Las tendencias revelan patrones: Gasto vs ROAS en el tiempo muestra estacionalidad
Los filtros dan control al usuario: Período, canal y campaña como mínimo
El diseño profesional aumenta el impacto: Colores consistentes, alineación, jerarquía visual
Próxima Lección
En la siguiente lección, pondrás todo en práctica con un proyecto completo. Tendrás un dataset de marketing real con el cual construirás un dashboard de campaña digital desde cero.
Quiz de Comprensión
Pregunta 1
¿Cuál es la ventaja de usar DATEADD en las medidas de comparación MoM?
A) Es más rápido que otras funciones B) Permite comparar automáticamente con el mismo período del mes anterior C) Solo funciona con meses D) Requiere menos memoria
Ver respuesta
Respuesta: B) Permite comparar automáticamente con el mismo período del mes anterior
DATEADD con parámetro -1, MONTH desplaza el contexto de fecha un mes atrás automáticamente, respetando los filtros actuales. Esto hace que la comparación sea dinámica según la selección del usuario.
Pregunta 2
¿Por qué es importante marcar la tabla de calendario como "Tabla de fechas" en Power BI?
A) Mejora el rendimiento de las consultas B) Habilita funciones de inteligencia de tiempo como DATESYTD C) Permite usar colores en los gráficos D) Es obligatorio para crear relaciones
Ver respuesta
Respuesta: B) Habilita funciones de inteligencia de tiempo como DATESYTD
Marcar una tabla como tabla de fechas permite que Power BI use funciones de Time Intelligence (DATESYTD, SAMEPERIODLASTYEAR, DATEADD, etc.) correctamente. Sin esto, algunas funciones pueden no funcionar como se espera.
Pregunta 3
¿Cuál es el orden correcto de las secciones en un dashboard de marketing según la jerarquía visual?
A) Tendencias → KPIs → Filtros → Funnel B) Filtros → KPIs → Funnel/Canal → Tendencias C) Funnel → Tendencias → KPIs → Filtros D) KPIs → Filtros → Tendencias → Funnel
Ver respuesta
Respuesta: B) Filtros → KPIs → Funnel/Canal → Tendencias
La jerarquía visual correcta coloca primero los filtros (para que el usuario establezca contexto), luego los KPIs principales (información más importante), después las visualizaciones de detalle (funnel, canales), y finalmente las tendencias que muestran evolución histórica.
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.