Cómo crear un gráfico de series temporales con líneas de tendencia en Power BI
Este tutorial muestra cómo crear un gráfico de series temporales en Power BI con líneas de tendencia y una previsión simple. Es útil para analizar la evolución de ventas, visitas o métricas a lo largo del tiempo e identificar patrones y desviaciones.
Requisitos previos
- Power BI Desktop instalado.
- Una tabla con columnas de Fecha y Valor (p. ej.: Date, Sales).
- Noções básicas de modelación (relaciones) y DAX.
Paso 1: Preparar la tabla de fechas
Una tabla de fechas (Calendar) es esencial para series temporales: permite agrupar por mes, trimestre y usar funciones de time intelligence correctamente.
// Exemplo DAX para crear una Calendar table Calendar = ADDCOLUMNS ( CALENDAR (DATE(2020,1,1), DATE(2024,12,31)), "Year", YEAR([Date]), "MonthNumber", MONTH([Date]), "MonthName", FORMAT([Date], "MMMM"), "YearMonth", FORMAT([Date], "YYYY-MM") )
Después de crear la tabla, márcala como "Date table" en Modelado y asegúrate de que la columna Date es la columna de fecha.
Paso 2: Relacionar la Calendar con los datos
Crea una relación entre Calendar[Date] y tu tabla de hechos (p. ej.: Sales[Date]). Usa relación 1:* con la Calendar en el lado 1.
Paso 3: Crear medidas básicas
Crea medidas para totalizar el valor y para comparar con periodos anteriores. Las medidas son esenciales para líneas de tendencia y forecast simple.
// Medida total Total Sales = SUM(Sales[Amount]) // Medida - ventas en el período anterior Sales Prev Period = CALCULATE([Total Sales], DATEADD(Calendar[Date], -1, YEAR))
Paso 4: Crear el gráfico de líneas
Añade un visual de Line chart. Coloca Calendar[Date] en el eje X y la medida Total Sales en los valores. Configura el eje para mostrar fecha continua (Type: Continuous) si quieres líneas suaves.
Paso 5: Añadir una línea de tendencia con una medida DAX
Para tener control y explicitar la línea de tendencia, calcula una tendencia lineal vía regresión simple (coeficiente e intercepto con DAX) y dibújala como serie adicional.
// Exemplo de tendencia linear (mínimo viable) Trend_Slope = VAR X = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR Y = AVERAGEX(VALUES(Calendar[Date]), [Total Sales]) VAR XY = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM")) * [Total Sales]) VAR XX = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM")) * VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR N = COUNTROWS(VALUES(Calendar[Date])) RETURN DIVIDE(XY - N * X * Y, XX - N * X * X) Trend_Intercept = VAR X = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR Y = AVERAGEX(VALUES(Calendar[Date]), [Total Sales]) VAR Slope = [Trend_Slope] RETURN Y - Slope * X Trend Line = VAR CurrX = VALUE(FORMAT(MAX(Calendar[Date]), "YYYYMM")) RETURN [Trend_Intercept] + [Trend_Slope] * CurrX
Nota: este ejemplo usa YYYYMM como representación numérica del tiempo para una regresión simple. Para intervalos diferentes ajusta la transformación de X.
Paso 6: Mostrar la línea de tendencia en el gráfico
Añade la medida Trend Line al mismo Line chart como serie adicional. Verás la línea que representa la tendencia lineal a lo largo del tiempo. Si lo prefieres, convierte el eje a Type: Continuous para una apariencia más natural.
Paso 7: Crear una previsión simple (forecast)
Puedes extender la tendencia para predecir valores futuros. Crea una tabla auxiliar con fechas futuras y usa la misma fórmula de Trend Line para calcular estimaciones.
// Tabla de fechas futuras (ejemplo 6 meses) FutureCalendar = CALENDAR (MAX(Calendar[Date]) + 1, EDATE(MAX(Calendar[Date]), 6)) // Medida para forecast en contexto de FutureCalendar Forecast Value = VAR CurrX = VALUE(FORMAT(MAX(FutureCalendar[Date]), "YYYYMM")) RETURN [Trend_Intercept] + [Trend_Slope] * CurrX
Combina la Calendar normal y la FutureCalendar en una visualización combinada o usa un Line chart que acepte ambas series (puedes unir las tablas con UNION si es necesario).
Verificar el resultado
Confirma que el gráfico muestra la serie original y la línea de tendencia. Verifica fechas con valores nulos, puntos outliers y si la línea de tendencia sigue la dirección esperada. Errores comunes: no marcar la tabla de fechas, uso de eje discreto en lugar de continuo, y agregaciones al nivel erróneo (usar Date vs YearMonth).
Conclusión
Ahora tienes un gráfico de series temporales con línea de tendencia y una previsión simple en Power BI. Próximos pasos: experimentar con suavizado (moving average), usar R o Python para forecast avanzado, o optimizar la regresión para frecuencias distintas. Consejo: prueba los resultados con holdout (separa algunos meses para validar la previsión).