
Click para visualizar reporte
El objetivo de este proyecto fue construir un dashboard completo en Power BI, basado en datos públicos de GA4, que permita analizar cómo los usuarios interactúan con un sitio web desde múltiples dimensiones: adquisición, comportamiento, engagement y conversión.
Todos los datos utilizados en este proyecto son públicos y sintéticos, provistos por Google como dataset de ejemplo para GA4.
Objetivo del proyecto
Simular un entorno real de análisis de comportamiento digital, desarrollando un reporte completo que permita:
- Medir volumen de usuarios, sesiones y eventos.
- Analizar fuentes de adquisición y canales de conversión.
- Visualizar niveles de engagement, conversiones y revenue.
- Segmentar audiencias por género, país o canal.
- Identificar eventos clave del recorrido del usuario.
Estructura del reporte
Diseñé el dashboard en formato multipágina, con navegación tipo app en Power BI Desktop. Cada página responde a una necesidad específica de análisis:
1. Home
La página principal brinda una visión general de KPIs como:
- Usuarios totales (y su variación frente al periodo anterior)
- Total de eventos y sesiones
- Conversiones
- Distribución de género
- Actividad por país y eventos más frecuentes
Es ideal para stakeholders que quieren una vista rápida del rendimiento general.
2. Report Snapshot
Aquí se sintetiza:
- Nuevos usuarios por canal (
organic
,referral
,cpc
, etc.) - Nivel de engagement promedio
- Revenue generado
- Comparativas temporales
Una vista útil para equipos de marketing o adquisición, con foco en crecimiento y monetización.
3. User Acquisition
Analiza en detalle cómo llegan los usuarios al sitio:
- Nuevos usuarios por canal a lo largo del tiempo
- Tasa de engagement por canal
- Conversión y revenue por tipo de tráfico
La estructura permite detectar qué fuentes traen usuarios más comprometidos, no solo mayor volumen.
4. Events
Explora la actividad interna del usuario en el sitio:
- Eventos clave (
page_view
,user_engagement
,add_to_cart
,purchase
) - Evolución temporal
- Conteo por usuario y revenue asociado
Pensado para equipos de producto y optimización de conversión (CRO).
5. Demographic
Visualiza la distribución de usuarios por país, incluyendo:
- Nuevos usuarios
- Sesiones comprometidas
- Tiempo promedio de interacción
- Conversiones y revenue por región
Clave para pensar en expansión geográfica, localización de contenidos o campañas regionales.
Tecnología y enfoque técnico
- Fuente de datos: Google BigQuery (dataset público de GA4)
- Transformación: consultas SQL exportadas a Power BI con modelado en Power Query
- Visualización: Power BI Desktop con navegación por secciones, bookmarks y diseño responsive
- Diseño: visuales personalizados y convenciones de storytelling visual para facilitar lectura
Modelo de datos
El modelo de datos se construyó con una estructura en estrella, pensada para análisis web multicapas, eficiente y escalable. Las tablas de hechos y dimensiones se organizaron así:
FactEvents
: tabla central de eventos del usuario (visitas, clics, compras, etc.) con contexto de canal, país, dispositivo, evento y revenue.FactEngagement
: mide interacciones agregadas por usuario y fecha.DimUsers
: contiene atributos del usuario (como género), conectado poruser_pseudo_id
.DimFecha
: calendario referencial que permite análisis temporal cruzado.
La combinación de estas tablas permite comparaciones entre periodos, segmentación dinámica, y análisis detallado sin comprometer rendimiento.

Medidas DAX utilizadas (algunas destacadas)
A continuación, se listan algunas de las medidas clave implementadas para calcular usuarios únicos, engagement promedio y variaciones entre periodos:
_Users =
CALCULATE(
DISTINCTCOUNT(FactEvents[user_pseudo_id]),
REMOVEFILTERS('DimFecha'),
FILTER(
ALLSELECTED('DimFecha'),
'DimFecha'[Date] >= MIN('DimFecha'[Date]) &&
'DimFecha'[Date] <= MAX('DimFecha'[Date])
)
)
_Users_PreviousPeriod_Shifted =
VAR DiasSeleccionados =
CALCULATE(
COUNTROWS(VALUES('DimFecha'[Date])),
ALLSELECTED('DimFecha')
)
VAR FechaMinActual =
CALCULATE(
MIN('DimFecha'[Date]),
ALLSELECTED('DimFecha')
)
VAR FechaDisponibleMin =
CALCULATE(
MIN('DimFecha'[Date]),
ALL('DimFecha')
)
VAR FechaInicioPrev = FechaMinActual - DiasSeleccionados
RETURN
IF(
FechaInicioPrev >= FechaDisponibleMin,
CALCULATE(
[_Users],
DATEADD('DimFecha'[Date], -DiasSeleccionados, DAY)
),
BLANK()
)
_users_VariacionPct =
VAR Actual = [_Users]
VAR Anterior = [_Users_PreviousPeriod_Shifted]
RETURN
IF(
NOT ISBLANK(Anterior),
DIVIDE(Actual - Anterior, Anterior),
BLANK()
)
_Average_Engagement_PrevPeriod =
VAR DiasFiltrados =
COUNTROWS(VALUES(DimFecha[Date]))
VAR FechaMin = MIN(DimFecha[Date])
VAR FechaDisponibleMin = CALCULATE(MIN(DimFecha[Date]), ALL(DimFecha))
VAR PeriodoInicioAnterior = FechaMin - DiasFiltrados
RETURN
IF(
PeriodoInicioAnterior >= FechaDisponibleMin,
CALCULATE(
[_AVG_Engagement_time],
FILTER(
ALL(DimFecha),
DimFecha[Date] >= PeriodoInicioAnterior &&
DimFecha[Date] < FechaMin
)
),
BLANK()
)
_average_engagement_VariacionPct =
VAR Actual = [_AVG_Engagement_time]
VAR Anterior = [_Average_Engagement_PrevPeriod]
RETURN
IF(
NOT ISBLANK(Anterior),
DIVIDE(Actual - Anterior, Anterior),
BLANK()
)
Estas medidas permitieron construir comparaciones dinámicas y automatizadas entre periodos, esenciales para visualizar impacto real de acciones de marketing o cambios de producto.
Aprendizajes clave
- La estructura multipágina permite desacoplar audiencias: cada stakeholder accede a la parte que necesita sin sobrecarga.
- Los datos de GA4 tienen gran granularidad; seleccionar las métricas correctas es tan importante como visualizarlas bien.
- Power BI se integra fluidamente con BigQuery, incluso en escenarios complejos.
Cierre
Este proyecto simula un caso real de monitoreo digital, usando datos sintéticos pero con estructura, lógica y visualización aplicables al mundo real.
Desde la adquisición hasta la conversión, pasando por eventos y engagement, el dashboard permite responder las preguntas que un equipo de producto, marketing o analítica debería estar haciéndose.