Proyecto: Dashboard de campaña digital
Proyecto hands-on con datos reales de marketing.
Es momento de poner en práctica todo lo aprendido. En este proyecto construirás un dashboard de marketing digital completo para una empresa ficticia de e-commerce. Al finalizar, tendrás un dashboard profesional que podrás adaptar a tus propios datos.
Contexto del Proyecto
La Empresa: TechStore Digital
TechStore Digital es una tienda online de productos tecnológicos que invierte en múltiples canales de marketing digital. El equipo de marketing necesita un dashboard para:
- Monitorear el rendimiento de campañas en tiempo real
- Comparar canales para optimizar la distribución del presupuesto
- Identificar tendencias y estacionalidad
- Presentar resultados a la dirección de manera clara
Objetivos del Dashboard
Al finalizar este proyecto, tu dashboard debe responder estas preguntas:
- ¿Cuánto estamos gastando y qué retorno obtenemos?
- ¿Qué canal tiene el mejor ROAS?
- ¿Cómo evolucionan nuestras métricas mes a mes?
- ¿Cuál es nuestro costo de adquisición de cliente?
- ¿Dónde están las oportunidades de mejora?
Parte 1: El Dataset
Descripción de los Datos
Para este proyecto, trabajarás con 3 archivos CSV que representan datos de marketing de TechStore Digital durante 2025:
Archivo 1: campañas_marketing.csv
Este archivo contiene métricas diarias de campañas publicitarias.
| Columna | Tipo | Descripción |
|---|---|---|
| Fecha | Date | Fecha de la métrica (YYYY-MM-DD) |
| Canal_ID | Integer | Identificador del canal (1-6) |
| Campaña | Text | Nombre de la campaña |
| Impresiones | Integer | Número de veces que se mostró el anuncio |
| Clics | Integer | Número de clics en el anuncio |
| Gasto | Decimal | Inversión publicitaria en USD |
| Leads | Integer | Formularios completados |
| Ventas | Integer | Transacciones completadas |
| Ingresos | Decimal | Ingresos generados en USD |
Muestra de datos:
Fecha,Canal_ID,Campaña,Impresiones,Clics,Gasto,Leads,Ventas,Ingresos
2025-01-01,1,Search_Generica,45000,1350,675.00,41,12,1440.00
2025-01-01,1,Search_Marca,28000,2100,420.00,63,22,2640.00
2025-01-01,2,Display_Remarketing,125000,875,187.50,18,5,600.00
2025-01-01,3,Facebook_Prospeccion,85000,1275,510.00,38,9,1080.00
2025-01-01,4,Instagram_Stories,62000,930,372.00,28,7,840.00
2025-01-01,5,LinkedIn_B2B,15000,225,337.50,12,3,450.00
2025-01-01,6,Email_Newsletter,0,2400,0.00,96,35,4200.00
Archivo 2: canales.csv
Tabla de dimensión con información de canales.
Canal_ID,Canal,Categoria,Tipo,Responsable
1,Google Search,Paid Search,Pagado,Ana García
2,Google Display,Display,Pagado,Ana García
3,Facebook Ads,Social Paid,Pagado,Carlos López
4,Instagram Ads,Social Paid,Pagado,Carlos López
5,LinkedIn Ads,Social Paid,Pagado,María Torres
6,Email Marketing,Email,Propio,Pedro Sánchez
Archivo 3: objetivos_mensuales.csv
Targets de marketing por mes.
Año_Mes,Gasto_Objetivo,ROAS_Objetivo,CAC_Objetivo,Clientes_Objetivo
2025-01,85000,4.0,280,300
2025-02,80000,4.0,275,290
2025-03,90000,4.2,260,345
2025-04,85000,4.0,270,315
...
Crear los Datos de Ejemplo
Si no tienes acceso a un archivo de datos real, puedes crear datos de ejemplo en Power Query.
Paso 1: Crea una nueva consulta en blanco y pega este código M:
let
// Generar fechas de 2025
FechaInicio = #date(2025, 1, 1),
FechaFin = #date(2025, 12, 31),
ListaFechas = List.Dates(FechaInicio, Duration.Days(FechaFin - FechaInicio) + 1, #duration(1,0,0,0)),
// Canales
Canales = {1, 2, 3, 4, 5, 6},
// Campañas por canal
CampanasPorCanal = [
1 = {"Search_Generica", "Search_Marca", "Search_Productos"},
2 = {"Display_Remarketing", "Display_Prospeccion"},
3 = {"Facebook_Prospeccion", "Facebook_Remarketing", "Facebook_Lookalike"},
4 = {"Instagram_Stories", "Instagram_Feed", "Instagram_Reels"},
5 = {"LinkedIn_B2B", "LinkedIn_Awareness"},
6 = {"Email_Newsletter", "Email_Promociones", "Email_Abandonos"}
],
// Función para generar datos aleatorios con patrones
GenerarFila = (fecha, canalId, campana) =>
let
// Estacionalidad: más alto en Q4 y días de semana
MesFactor = if Date.Month(fecha) >= 10 then 1.5
else if Date.Month(fecha) >= 7 then 1.2
else 1.0,
DiaSemana = Date.DayOfWeek(fecha, Day.Monday),
DiaFactor = if DiaSemana < 5 then 1.0 else 0.7,
// Base por canal
BaseImpresiones = List.Sum({
{45000, 125000, 85000, 62000, 15000, 0}
}{canalId - 1}),
BaseClics = List.Sum({
{1500, 875, 1200, 930, 225, 2400}
}{canalId - 1}),
BaseCPM = List.Sum({
{15, 1.5, 6, 6, 22.5, 0}
}{canalId - 1}),
BaseConversion = List.Sum({
{0.03, 0.02, 0.025, 0.025, 0.04, 0.04}
}{canalId - 1}),
// Calcular métricas con variación
Variacion = Number.RandomBetween(0.7, 1.3),
Impresiones = if canalId = 6 then 0
else Number.RoundDown(BaseImpresiones * MesFactor * DiaFactor * Variacion),
Clics = Number.RoundDown(BaseClics * MesFactor * DiaFactor * Variacion),
Gasto = if canalId = 6 then 0
else Number.Round(Impresiones / 1000 * BaseCPM * Number.RandomBetween(0.9, 1.1), 2),
Leads = Number.RoundDown(Clics * BaseConversion * Number.RandomBetween(0.8, 1.2)),
Ventas = Number.RoundDown(Leads * 0.3 * Number.RandomBetween(0.7, 1.3)),
Ingresos = Ventas * Number.RandomBetween(100, 150)
in
[
Fecha = fecha,
Canal_ID = canalId,
Campaña = campana,
Impresiones = Impresiones,
Clics = Clics,
Gasto = Gasto,
Leads = Leads,
Ventas = Ventas,
Ingresos = Number.Round(Ingresos, 2)
],
// Generar todas las combinaciones
TodasLasCombinaciones = List.Generate(
() => [i = 0, Datos = null],
each [i] < List.Count(ListaFechas) * 12, // Aproximado
each [
i = [i] + 1,
FechaIdx = Number.RoundDown([i] / 12),
CampanaIdx = Number.Mod([i], 12),
Datos = null
]
),
// Simplificación: crear tabla base
TablaBase = Table.FromRecords(
List.Transform(
List.Generate(
() => 0,
each _ < List.Count(ListaFechas) * 6,
each _ + 1
),
each
let
fechaIdx = Number.RoundDown(_ / 6),
canalIdx = Number.Mod(_, 6) + 1,
fecha = ListaFechas{fechaIdx},
campanas = Record.Field(CampanasPorCanal, Text.From(canalIdx)),
campana = campanas{Number.Mod(Number.RoundDown(fechaIdx / 10), List.Count(campanas))}
in
GenerarFila(fecha, canalIdx, campana)
)
)
in
TablaBase
Nota: Este código genera datos de ejemplo. En un proyecto real, cargarías tus propios archivos CSV o conectarías a tu plataforma de marketing.
Parte 2: Preparación de Datos
Paso 1: Cargar los Datos
- Abre Power BI Desktop
- Ve a Inicio → Obtener datos → Texto/CSV
- Carga los 3 archivos (o usa el código M de ejemplo)
- Haz clic en Transformar datos para abrir Power Query
Paso 2: Transformar campañas_marketing
En Power Query, aplica estas transformaciones:
let
Origen = Csv.Document(File.Contents("campañas_marketing.csv")),
EncabezadosPromovidos = Table.PromoteHeaders(Origen),
TiposCambiados = Table.TransformColumnTypes(EncabezadosPromovidos,{
{"Fecha", type date},
{"Canal_ID", Int64.Type},
{"Campaña", type text},
{"Impresiones", Int64.Type},
{"Clics", Int64.Type},
{"Gasto", Currency.Type},
{"Leads", Int64.Type},
{"Ventas", Int64.Type},
{"Ingresos", Currency.Type}
}),
// Renombrar columna Ventas a Clientes para claridad
ColumnasRenombradas = Table.RenameColumns(TiposCambiados, {{"Ventas", "Clientes"}})
in
ColumnasRenombradas
Paso 3: Crear Tabla de Calendario
Crea una nueva consulta con este código:
let
FechaInicio = #date(2025, 1, 1),
FechaFin = #date(2025, 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),
AgregarMesCorto = Table.AddColumn(AgregarNombreMes, "Mes_Corto",
each Date.ToText([Fecha], "MMM", "es-ES"), type text),
AgregarTrimestre = Table.AddColumn(AgregarMesCorto, "Trimestre",
each "Q" & Text.From(Date.QuarterOfYear([Fecha])), type text),
AgregarAñoMes = Table.AddColumn(AgregarTrimestre, "Año_Mes",
each Date.ToText([Fecha], "yyyy-MM"), type text),
AgregarOrdenMes = Table.AddColumn(AgregarAñoMes, "Orden_Mes",
each Date.Year([Fecha]) * 100 + Date.Month([Fecha]), Int64.Type)
in
AgregarOrdenMes
Nombra esta consulta como Dim_Calendario.
Paso 4: Cerrar y Aplicar
- Haz clic en Cerrar y aplicar
- Espera a que se carguen los datos
Paso 5: Configurar Relaciones
En la vista de Modelo:
- Arrastra
Dim_Calendario[Fecha]aFact_Campañas[Fecha] - Arrastra
Dim_Canales[Canal_ID]aFact_Campañas[Canal_ID] - Verifica que las relaciones sean 1:N (uno a muchos)
Diagrama del modelo:
Dim_Calendario Dim_Canales
┌─────────────┐ ┌─────────────┐
│ Fecha (PK) │ │ Canal_ID(PK)│
│ Año │ │ Canal │
│ Mes │ │ Categoria │
│ Trimestre │ │ Tipo │
│ Año_Mes │ │ Responsable │
└──────┬──────┘ └──────┬──────┘
│ 1:N │ 1:N
│ │
▼ ▼
┌─────────────────────────────────────┐
│ Fact_Campañas │
│ Fecha (FK) │
│ Canal_ID (FK) │
│ Campaña │
│ Impresiones, Clics, Gasto, etc. │
└─────────────────────────────────────┘
Paso 6: Marcar Tabla de Fechas
- Selecciona la tabla
Dim_Calendario - Ve a Herramientas de tabla → Marcar como tabla de fechas
- Selecciona la columna
Fecha
Parte 3: Crear las Medidas DAX
Crea una nueva tabla llamada _Medidas para organizar tus medidas:
_Medidas = DATATABLE("Medida", STRING, {{"Placeholder"}})
Ahora crea las siguientes medidas dentro de esta tabla:
Medidas Base
Total Gasto = SUM(Fact_Campañas[Gasto])
Total Impresiones = SUM(Fact_Campañas[Impresiones])
Total Clics = SUM(Fact_Campañas[Clics])
Total Leads = SUM(Fact_Campañas[Leads])
Total Clientes = SUM(Fact_Campañas[Clientes])
Total Ingresos = SUM(Fact_Campañas[Ingresos])
Métricas de Marketing
CPM =
DIVIDE(
[Total Gasto],
[Total Impresiones],
0
) * 1000
CPC =
DIVIDE(
[Total Gasto],
[Total Clics],
0
)
CTR =
DIVIDE(
[Total Clics],
[Total Impresiones],
0
) * 100
CPL =
DIVIDE(
[Total Gasto],
[Total Leads],
0
)
CAC =
DIVIDE(
[Total Gasto],
[Total Clientes],
0
)
ROAS =
DIVIDE(
[Total Ingresos],
[Total Gasto],
0
)
ROAS Texto =
VAR RoasValor = [ROAS]
RETURN
IF(
ISBLANK(RoasValor) || RoasValor = 0,
"-",
FORMAT(RoasValor, "0.0") & ":1"
)
Tasa Conversion =
DIVIDE(
[Total Clientes],
[Total Clics],
0
) * 100
Métricas de Comparación
Gasto Mes Anterior =
CALCULATE(
[Total Gasto],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
Variación Gasto MoM =
VAR GastoActual = [Total Gasto]
VAR GastoAnterior = [Gasto Mes Anterior]
RETURN
DIVIDE(
GastoActual - GastoAnterior,
GastoAnterior,
0
)
ROAS Mes Anterior =
CALCULATE(
[ROAS],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
Variación ROAS MoM = [ROAS] - [ROAS Mes Anterior]
Clientes Mes Anterior =
CALCULATE(
[Total Clientes],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
Variación Clientes MoM =
DIVIDE(
[Total Clientes] - [Clientes Mes Anterior],
[Clientes Mes Anterior],
0
)
CAC Mes Anterior =
CALCULATE(
[CAC],
DATEADD(Dim_Calendario[Fecha], -1, MONTH)
)
Variación CAC MoM =
DIVIDE(
[CAC] - [CAC Mes Anterior],
[CAC Mes Anterior],
0
)
Métricas YTD
Gasto YTD =
CALCULATE(
[Total Gasto],
DATESYTD(Dim_Calendario[Fecha])
)
Ingresos YTD =
CALCULATE(
[Total Ingresos],
DATESYTD(Dim_Calendario[Fecha])
)
Clientes YTD =
CALCULATE(
[Total Clientes],
DATESYTD(Dim_Calendario[Fecha])
)
ROAS YTD =
DIVIDE(
[Ingresos YTD],
[Gasto YTD],
0
)
Métricas para Formato Condicional
ROAS Estado =
VAR RoasActual = [ROAS]
RETURN
SWITCH(
TRUE(),
ISBLANK(RoasActual), "Sin datos",
RoasActual >= 5, "Excelente",
RoasActual >= 4, "Bueno",
RoasActual >= 3, "Aceptable",
RoasActual >= 2, "Bajo",
"Crítico"
)
Indicador Tendencia Gasto =
VAR Variacion = [Variación Gasto MoM]
RETURN
SWITCH(
TRUE(),
ISBLANK(Variacion), "➖",
Variacion > 0.05, "⬆️",
Variacion < -0.05, "⬇️",
"➖"
)
Parte 4: Construir el Dashboard
Configuración de Página
- Ve a Vista → Tamaño de página → Personalizado
- Establece: Ancho = 1280px, Alto = 720px
- Fondo: #F5F7FA (gris muy claro)
Sección 1: Encabezado
Inserta un Cuadro de texto
Escribe: "Dashboard de Marketing Digital - TechStore"
Fuente: Segoe UI Semibold, 24pt, color #35286B
Posición: X=20, Y=10, Ancho=600, Alto=40
Inserta otro cuadro de texto para la fecha de actualización:
Usa esta medida para mostrar la fecha:
Última Actualización =
"Datos actualizados: " & FORMAT(MAX(Fact_Campañas[Fecha]), "DD/MM/YYYY")
Sección 2: Filtros (Segmentadores)
Crea 3 segmentadores en línea:
Segmentador 1: Período
- Campo:
Dim_Calendario[Año_Mes] - Tipo: Desplegable
- Posición: X=20, Y=60, Ancho=200, Alto=40
Segmentador 2: Canal
- Campo:
Dim_Canales[Canal] - Tipo: Desplegable con "Seleccionar todo"
- Posición: X=240, Y=60, Ancho=200, Alto=40
Segmentador 3: Campaña
- Campo:
Fact_Campañas[Campaña] - Tipo: Desplegable
- Posición: X=460, Y=60, Ancho=200, Alto=40
Sección 3: KPIs (Tarjetas)
Crea 4 tarjetas horizontales:
Tarjeta 1: Gasto Total
Campo: [Total Gasto]
Formato: Moneda, 0 decimales, K para miles
Posición: X=20, Y=110, Ancho=295, Alto=120
Título: "Inversión"
Subtítulo: medida [Variación Gasto MoM]
Tarjeta 2: ROAS
Campo: [ROAS Texto]
Posición: X=335, Y=110, Ancho=295, Alto=120
Título: "ROAS"
Subtítulo: medida [Variación ROAS MoM]
Color fondo condicional basado en [ROAS Estado]
Tarjeta 3: CAC
Campo: [CAC]
Formato: Moneda, 0 decimales
Posición: X=650, Y=110, Ancho=295, Alto=120
Título: "CAC"
Subtítulo: medida [Variación CAC MoM]
Tarjeta 4: Clientes
Campo: [Total Clientes]
Formato: Número entero
Posición: X=965, Y=110, Ancho=295, Alto=120
Título: "Clientes Nuevos"
Subtítulo: medida [Variación Clientes MoM]
Sección 4: Funnel de Conversión
- Inserta un Gráfico de embudo
- Grupo: Crea una tabla calculada para el funnel
Tabla_Funnel =
VAR Impresiones = [Total Impresiones]
VAR Clics = [Total Clics]
VAR Leads = [Total Leads]
VAR Clientes = [Total Clientes]
RETURN
DATATABLE(
"Etapa", STRING,
"Orden", INTEGER,
"Cantidad", INTEGER,
{
{"Impresiones", 1, Impresiones},
{"Clics", 2, Clics},
{"Leads", 3, Leads},
{"Clientes", 4, Clientes}
}
)
O usa un gráfico de barras horizontal con estas medidas:
Funnel Impresiones = [Total Impresiones]
Funnel Clics = [Total Clics]
Funnel Leads = [Total Leads]
Funnel Clientes = [Total Clientes]
Posición: X=20, Y=250, Ancho=400, Alto=250
Sección 5: Rendimiento por Canal
- Inserta una Matriz
- Filas:
Dim_Canales[Canal] - Valores:
[Total Gasto],[Total Clientes],[ROAS],[CAC] - Posición: X=440, Y=250, Ancho=400, Alto=250
Formato condicional:
- Columna ROAS: Barras de datos (verde)
- Columna CAC: Escala de colores (verde = bajo, rojo = alto)
Sección 6: Tendencia de ROAS y Gasto
- Inserta un Gráfico combinado de líneas y columnas
- Eje X:
Dim_Calendario[Año_Mes](ordenar por Orden_Mes) - Columnas:
[Total Gasto] - Línea:
[ROAS](eje secundario) - Posición: X=860, Y=250, Ancho=400, Alto=250
Configuración:
- Eje Y primario: Título = "Gasto ($)", Formato moneda
- Eje Y secundario: Título = "ROAS", Rango 0-8
- Colores: Columnas = #AE4291, Línea = #35286B
Sección 7: Tendencia Mensual Detallada
- Inserta un Gráfico de líneas
- Eje X:
Dim_Calendario[Año_Mes] - Valores:
[Total Clientes] - Leyenda:
Dim_Canales[Canal] - Posición: X=20, Y=520, Ancho=620, Alto=180
Sección 8: Top Campañas
- Inserta una Tabla
- Columnas:
Fact_Campañas[Campaña],[Total Gasto],[Total Clientes],[ROAS] - Ordenar por
[Total Gasto]descendente - Posición: X=660, Y=520, Ancho=600, Alto=180
Parte 5: Layout Final
┌──────────────────────────────────────────────────────────────────────────────┐
│ Dashboard de Marketing Digital - TechStore Última actualización: 27/01 │
├──────────────────────────────────────────────────────────────────────────────┤
│ [Período ▼] [Canal ▼] [Campaña ▼] │
├─────────────┬─────────────┬─────────────┬─────────────┬──────────────────────┤
│ INVERSIÓN │ ROAS │ CAC │ CLIENTES │ │
│ $125.4K │ 4.2:1 │ $278 │ 451 │ │
│ ▲ +12% │ ▲ +0.3 │ ▼ -8% │ ▲ +18% │ │
├─────────────┴─────────────┴─────────────┴─────────────┘ │
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────────┐ │
│ │ FUNNEL │ │ POR CANAL │ │ ROAS & GASTO │ │
│ │ │ │ │ │ │ │
│ │ ████████ 2.5M │ │ Google 4.5:1 │ │ ╭──╮ │ │
│ │ ████ 45K │ │ Meta 3.8:1 │ │ ╭╯ ╰───╮ │ │
│ │ ██ 1.8K │ │ LinkedIn 2.9:1 │ │ ╭╯ ╰──╮ │ │
│ │ █ 451 │ │ Email 6.2:1 │ │ ╭╯ ╰── │ │
│ │ │ │ │ │ │ │
│ └─────────────────────┘ └─────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌────────────────────────────────┐ ┌──────────────────────────────────────┐ │
│ │ CLIENTES POR CANAL (Mensual) │ │ TOP CAMPAÑAS │ │
│ │ │ │ Campaña Gasto Clientes ROAS│ │
│ │ Google ───────────── │ │ Search_Marca $45K 180 5.2 │ │
│ │ Meta ───────── │ │ Email_Promos $0 165 ∞ │ │
│ │ Email ───── │ │ FB_Remarket $32K 120 4.1 │ │
│ │ │ │ │ │
│ └────────────────────────────────┘ └──────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────────┘
Parte 6: Guía de Interpretación
Una vez completado el dashboard, aquí está cómo interpretarlo:
Lectura de KPIs
| KPI | Qué buscar | Acción si es bajo |
|---|---|---|
| Inversión | Ejecución del presupuesto | Verificar si hay campañas pausadas |
| ROAS | Mínimo 4:1 para e-commerce | Optimizar campañas de bajo rendimiento |
| CAC | Menor que LTV / 3 | Revisar segmentación y creativos |
| Clientes | Crecimiento mes a mes | Aumentar presupuesto en canales top |
Análisis del Funnel
Impresiones → Clics = CTR (objetivo: >1.5%)
Si CTR bajo: Revisar creativos y segmentación
Clics → Leads = Tasa conversión landing (objetivo: >3%)
Si tasa baja: Optimizar landing page, oferta
Leads → Clientes = Tasa cierre (objetivo: >20%)
Si tasa baja: Revisar calidad de leads, proceso de ventas
Comparación por Canal
| Canal | ROAS Esperado | Mejor uso |
|---|---|---|
| 5-10:1 | Retención, promociones | |
| Google Search | 4-6:1 | Captura de demanda |
| 3-5:1 | Prospección, awareness | |
| 2-4:1 | B2B, alto ticket | |
| Display | 2-3:1 | Remarketing |
Acciones según Hallazgos
Si ROAS de un canal < 3:1:
- Revisar segmentación de audiencia
- Probar nuevos creativos
- Ajustar pujas/presupuesto
- Considerar pausar si no mejora
Si CAC está subiendo:
- Analizar calidad de tráfico
- Optimizar landing pages
- Revisar proceso de conversión
- Verificar competencia en subastas
Si Email tiene ROAS infinito (gasto = 0):
- Es correcto si solo cuentas envíos sin costo
- Considera incluir costo de herramienta + tiempo
Parte 7: Entrega del Proyecto
Checklist Final
Antes de considerar el proyecto completo, verifica:
- Los 4 KPIs principales muestran valores correctos
- El funnel muestra las 4 etapas con tasas de conversión
- La matriz de canales ordena por ROAS o Gasto
- El gráfico de tendencia muestra al menos 6 meses
- Los filtros funcionan correctamente
- El formato condicional resalta buenos/malos valores
- Los títulos y etiquetas son claros
- La paleta de colores es consistente
Mejoras Opcionales
Si terminas antes, considera agregar:
- Página de detalle con drill-through por canal
- Tooltip personalizado con mini-gráfico de tendencia
- Bookmarks para vistas ejecutiva vs operativa
- Alertas para métricas fuera de rango
- Comparación YoY además de MoM
Puntos Clave del Proyecto
El modelo de datos es la base: Sin un modelo bien estructurado, las medidas no funcionan correctamente
Las medidas DAX se construyen gradualmente: Primero las base, luego las derivadas, finalmente las de comparación
El layout sigue una jerarquía: De lo más importante (KPIs) a lo más detallado (tablas)
El funnel cuenta una historia: Dónde se pierden los usuarios en el proceso
La comparación temporal es clave: MoM y YTD dan contexto a los números actuales
El dashboard debe responder preguntas: Cada visual existe para un propósito específico
Quiz de Comprensión
Pregunta 1
En el modelo de datos de marketing, ¿por qué es importante que la relación entre Dim_Calendario y Fact_Campañas sea 1:N?
A) Porque cada fecha puede tener múltiples registros de campañas B) Porque es más rápido para Power BI C) Porque permite usar colores D) Porque es obligatorio en Power BI
Ver respuesta
Respuesta: A) Porque cada fecha puede tener múltiples registros de campañas
Una fecha (ej: 2025-01-15) puede tener múltiples filas en la tabla de campañas (una por cada canal/campaña activa ese día). La relación 1:N refleja esta realidad: 1 fecha se relaciona con N registros de métricas.
Pregunta 2
Si el ROAS de Email Marketing aparece como infinito o muy alto, ¿qué podría estar causándolo?
A) Un error en la fórmula DAX B) El gasto registrado es $0 pero hay ingresos atribuidos C) Power BI no puede calcular divisiones D) Los datos están corruptos
Ver respuesta
Respuesta: B) El gasto registrado es $0 pero hay ingresos atribuidos
ROAS = Ingresos / Gasto. Si el email marketing no tiene costo de publicidad registrado (gasto = $0), pero sí genera ingresos, la división resulta en infinito. En la práctica, deberías considerar el costo de la herramienta de email y el tiempo de creación.
Pregunta 3
¿Cuál es el orden correcto para construir las medidas DAX en un proyecto de marketing?
A) Comparación → Base → Formato → Derivadas B) Base → Derivadas → Comparación → Formato C) Formato → Base → Comparación → Derivadas D) Derivadas → Comparación → Base → Formato
Ver respuesta
Respuesta: B) Base → Derivadas → Comparación → Formato
El orden correcto es:
- Base: SUM de columnas (Gasto, Clics, etc.)
- Derivadas: Calculadas con las base (CPC, CTR, ROAS)
- Comparación: Usan DATEADD y otras funciones de tiempo
- Formato: Para presentación (texto, colores, estados)
Cada capa depende de la anterior.
Pregunta 4
Si un canal tiene ROAS de 2.5:1 y el objetivo es 4:1, ¿qué acciones deberían considerarse primero?
A) Eliminar el canal inmediatamente B) Duplicar el presupuesto para obtener más datos C) Revisar segmentación, creativos y landing pages antes de decidir D) Ignorarlo si representa poco presupuesto
Ver respuesta
Respuesta: C) Revisar segmentación, creativos y landing pages antes de decidir
Antes de eliminar o escalar un canal, debes entender POR QUÉ el rendimiento es bajo. Revisar segmentación (¿audiencia correcta?), creativos (¿mensajes relevantes?) y landing pages (¿conversión optimizada?) puede revelar oportunidades de mejora. Solo después de optimizar y no ver mejoras, considerar reducir inversión.
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.