FUNCIONES DE INTELIGENCIA DE TIEMPO EN POWER BI
Las funciones de inteligencia de tiempo en Power BI permiten analizar datos a lo largo del tiempo de forma sencilla y potente mediante funciones DAX. Con ellas se pueden calcular acumulados anuales, comparar periodos, obtener el mismo periodo del año anterior o moverse hacia delante y hacia atrás en el calendario sin tener que crear medidas complejas a mano.Estas funciones son una de las características más utilizadas en informes de negocio, ya que facilitan el análisis de tendencias, el seguimiento de KPIs y la comparación entre periodos.
Requisitos previos imprescindibles
Para que las funciones de inteligencia de tiempo funcionen correctamente es necesario cumplir varios requisitos:- Tabla de fechas (Date table): Debe existir una tabla de calendario con una columna de tipo fecha que contenga fechas continuas (sin huecos) y que cubra todos los periodos de tus datos de hechos.
- Marcar la tabla como tabla de fechas: En el modelo de datos, selecciona la tabla de calendario → clic derecho → “Marcar como tabla de fechas” y elegir la columna de fecha.
- Relación correcta: La tabla de fechas debe estar relacionada con las tablas de hechos mediante la columna de fecha (preferiblemente una relación 1 a muchos).
- Columna de fecha completa: La columna usada debe contener valores de tipo fecha,no texto ni números formateados como fecha.
Principales funciones de inteligencia de tiempo
A continuación se detallan las funciones más utilizadas, con su sintaxis básica y un ejemplo típico.Acumulados (Year-to-Date, Quarter-to-Date, Month-to-Date)
- "TOTALYTD": Calcula el acumulado desde el inicio del año hasta la fecha actual del contexto. "TOTALYTD([Ventas]; 'Calendario'[Fecha])"
- "TOTALQTD": Acumulado desde el inicio del trimestre, "TOTALQTD([Ventas]; 'Calendario'[Fecha])".
- "TOTALMTD": Acumulado desde el inicio del mes, "TOTALMTD([Ventas]; 'Calendario'[Fecha])".
Comparaciones con periodos anteriores
- "SAMEPERIODLASTYEAR": Devuelve el mismo periodo del año anterior. Es muy usada para calcular variaciones interanuales. "CALCULATE([Ventas]; SAMEPERIODLASTYEAR('Calendario'[Fecha]))".
- "PREVIOUSYEAR / PREVIOUSQUARTER / PREVIOUSMONTH": Desplazan el contexto al periodo anterior completo. "CALCULATE([Ventas]; PREVIOUSYEAR('Calendario'[Fecha]))".
- "DATEADD": Mueve el periodo un número determinado de intervalos (días, meses, trimestres o años). "CALCULATE([Ventas]; DATEADD('Calendario'[Fecha]; -1; MONTH))" ventas del mes anterior.
- "PARALLELPERIOD": Similar a "DATEADD", pero trabaja con periodos completos (mes, trimestre o año). "CALCULATE([Ventas]; PARALLELPERIOD('Calendario'[Fecha]; -1; YEAR))".
Otras funciones útiles
- "DATESYTD / DATESQTD / DATESMTD": Devuelven el conjunto de fechas desde el inicio del periodo hasta la fecha actual. Se usan frecuentemente dentro de "CALCULATE".
- "DATESBETWEEN": Permite seleccionar un rango de fechas concreto.
- "ENDOFMONTH" / "ENDOFQUARTER" /" ENDOFYEAR": Devuelven la última fecha del periodo correspondiente.
- "STARTOFMONTH" / "STARTOFQUARTER" / "STARTOFYEAR": Devuelven la primera fecha del periodo.
Ejemplo práctico de medidas
Se tiene una medida básica de ventas:Ventas = SUM(Facturas[Importe])
Ventas YTD = TOTALYTD([Ventas]; 'Calendario'[Fecha])
Ventas Año Anterior = CALCULATE([Ventas]; SAMEPERIODLASTYEAR('Calendario'[Fecha]))
Variación vs Año Anterior =
DIVIDE(
[Ventas] - [Ventas Año Anterior];
[Ventas Año Anterior]
)
Buenas prácticas
- Crear siempre una tabla de fechas dedicada, se puede generar con DAX, Power Query o con scripts.
- Evitar usar columnas de fecha de las tablas de hechos directamente en las funciones de inteligencia de tiempo.
- Combinar las funciones con "CALCULATE" para obtener mayor flexibilidad.
- Probar las medidas con diferentes filtros de fecha para validar los resultados.
- Documentar las medidas para que el equipo de negocio entienda fácilmente