Foro Empleos Academia Cursos Blog
Recursos
  • Ejemplos de dashboards
  • DatData Games
  • Alumnos destacados
  • Ranking
  • Torneos pasados
  • Tests
Iniciar sesión Inscribirme
Back arrow

Tabla calendario y medidas de ingeligencia de tiempo

Avatar por defecto

Roxana S.

Estudiante

•

hace 3 meses

Buenas, 

Quisiera saber como puedo resolver el siguiente caso. 
Tengo mi tabla de hechos que almacena ejecuciones por fecha. El informe que tengo que realizar tiene unas fechas de corte que el usuario va asignando  por lo que tengo una nueva tabla llamada FechaCorte que se asigna las ejecuciones que se deben tener en cuenta en este caso y tengo relacionada esta misma tabla con la de hechos a traves de un index. Hasta ahi funciona correcto, ahora mi problema esta en cuanto quiero realizar distintas medidas con inteligencia de tiempo. Cree la tabla calendario relacionada con la tabla FechaCorte pero cuando quiero calcular el valor de la fecha anterior por ejemplo (deberia ser la anterior fecha de corte) el calculo es erroneo.
Ej:

FechaCorte  
15/12/2025
15/09/2025
15/06/2025


Deberia llegar a la fechaAnterior de cada una de estas 
15/12/2025     -->       15/09/2025
15/09/2025    -->      15/06/2025 
15/06/2025

Es posible trabajar estos calculos con inteligencia de tiempo dentro de una medida?  De que forma puedo realizarlo?
Estoy siguiendo los videos explicativos sobre inteligencia de tiempo pero no llego a ninguno con una problematica similar.

Muchas gracias de ante mano




DAX

0 Votos
2
Respuestas
Respuestas
Avatar por defecto

Asistente Virtual Datdata

Equipo Datdata

•

respondió hace 3 meses

🤖 Esta respuesta fue generada automáticamente por nuestra inteligencia artificial local. Es un intento único de ayudarte al instante. No responderá a mensajes posteriores en este hilo.

Hola, ¡gracias por tu consulta!

Entiendo perfectamente tu desafío. Estás intentando calcular la "fecha anterior" para cada fecha de corte en tu tabla `FechaCorte`, pero la relación directa con la tabla calendario no está funcionando como esperas para las funciones de inteligencia de tiempo.

El problema principal radica en que las funciones de inteligencia de tiempo de DAX (como `DATEADD`, `PREVIOUSMONTH`, etc.) operan sobre un contexto de fecha continuo. Cuando tienes fechas de corte específicas y no una secuencia continua de fechas diarias en tu tabla de hechos o en la relación directa con el calendario, estas funciones pueden dar resultados erróneos.

Dado que tu tabla `FechaCorte` tiene fechas específicas (15/12/2025, 15/09/2025, etc.) y no una secuencia diaria continua, necesitas una forma de decirle a DAX cuál es la fecha inmediatamente anterior a cada una de estas fechas de corte.

Solución Propuesta: Medida DAX para obtener la Fecha Anterior

La forma más robusta de lograr esto es crear una medida DAX que, para cada `FechaCorte` en el contexto actual, encuentre la fecha de corte inmediatamente anterior en tu tabla `FechaCorte`. Dado que tu tabla `FechaCorte` no es un calendario continuo, tendremos que ser un poco más explícitos.

Aquí te presento una medida que podrías intentar:

FechaCorte Anterior = 
VAR _FechaCorteActual = MAX('FechaCorte'[FechaCorte]) // Obtiene la fecha de corte en el contexto actual
VAR _FechaAnterior = 
    CALCULATE(
        MAX('FechaCorte'[FechaCorte]), // Busca la fecha máxima
        FILTER(
            ALL('FechaCorte'), // Considera todas las fechas de corte
            'FechaCorte'[FechaCorte] < _FechaCorteActual // Filtra solo las fechas anteriores a la actual
        )
    )
RETURN
    _FechaAnterior

Explicación de la medida:

  • `VAR _FechaCorteActual = MAX('FechaCorte'[FechaCorte])`: Captura la fecha de corte que está actualmente en el contexto de la fila (si estás en una tabla o matriz que muestra las fechas de corte).
  • `CALCULATE(MAX('FechaCorte'[FechaCorte]), FILTER(ALL('FechaCorte'), 'FechaCorte'[FechaCorte] < _FechaCorteActual))`:
    • `CALCULATE` modifica el contexto.
    • `MAX('FechaCorte'[FechaCorte])` dentro de `CALCULATE` busca la fecha máxima que cumpla las condiciones del filtro.
    • `FILTER(ALL('FechaCorte'), 'FechaCorte'[FechaCorte] < _FechaCorteActual)`: Aquí se aplica el filtro. `ALL('FechaCorte')` elimina cualquier filtro preexistente en la tabla `FechaCorte`, asegurando que consideremos todas las fechas. Luego, `FILTER` selecciona solo aquellas fechas que son estrictamente anteriores a la `_FechaCorteActual`. Al tomar el `MAX` de este conjunto filtrado, obtenemos la fecha de corte más reciente que es anterior a la fecha actual.
  • `RETURN _FechaAnterior`: Devuelve la fecha anterior calculada.

Consideraciones Adicionales:

  • Relación con la Tabla Calendario: Aunque no uses `CALENDARAUTO` o Power Query para generar la tabla calendario principal, sí es crucial que tu tabla `FechaCorte` tenga una relación activa con tu tabla calendario (a través de la columna de fecha). Si no tienes una tabla calendario continua, esta medida busca directamente en la tabla `FechaCorte`.
  • Formato de Fecha: Asegúrate de que la columna `FechaCorte` en tu tabla `FechaCorte` tenga el tipo de dato "Fecha" correctamente configurado, tanto en Power Query como en la vista de datos de Power BI.
  • Mejoras de Rendimiento: Si tu tabla `FechaCorte` es muy grande, esta medida puede ser costosa en términos de rendimiento porque itera sobre la tabla. Sin embargo, para este tipo de lógica específica de "fecha de corte anterior", suele ser la forma más directa.
  • Alternativas (más complejas): En escenarios más complejos, podrías pre-calcular estas fechas anteriores en Power Query, o usar variables y iteradores en DAX (`EARLIER` o `MAX` dentro de un contexto de iteración) pero el enfoque anterior suele ser el más claro para este problema.

Espero que esta medida te ayude a resolver tu problema. Si sigues experimentando dificultades o necesitas ajustar la lógica, no dudes en preguntar.

Te sugiero visitar:

https://www.datdata.com/cursos/int101/clases/RyWfmo

Este curso te enseñará sobre DAX, incluyendo funciones como `CALCULATE`, `MAX`, `FILTER` y `ALL`, que son fundamentales para este tipo de cálculos de inteligencia de tiempo.

- Asistente Virtual de Datdata

0 Votos
Avatar de Javier Gómez

Javier Gómez

Equipo Datdata

•

respondió hace 2 meses

Hola Roxana, mira una situación similar puedes encontrarla en la siguiente clase:
https://www.datdata.com/cursos/proyectos-avanzados-con-power-bi-pbi301/clases/ejemplo-3-registro-de-horas-en-una-sola-columna-Zu7p5e

 

La solución me parece que es tratar la tabla FechaCorte como una secuencia personalizada y encontrar manualmente la fecha anterior según el orden que tú definas.

Lo que yo haría es agregar un índice a la tabla FechaCorte (1, 2, 3…) desde Power Query como se muestra en la clase. Con eso puedes identificar cuál es la fila anterior sin depender del calendario estándar.

Después, en una medida para buscar la fecha de corte. Por ejemplo:
FechaCorteAnterior :=
VAR FechaActualID =
    SELECTEDVALUE(FechaCorte[FechaCorteID])

VAR IDAnterior =
    CALCULATE(
        MAX(FechaCorte[FechaCorteID]),
        FechaCorte[FechaCorteID] < FechaActualID
    )

RETURN
    CALCULATE(
        MAX(FechaCorte[FechaCorte]),
        FechaCorte[FechaCorteID] = IDAnterior
    )


Eso te devuelve la fecha de corte anterior, aunque tus fechas sean trimestrales, irregulares o definidas por el usuario.

Y si después necesitas calcular métricas basadas en esa fecha anterior, simplemente usas esa medida dentro de un CALCULATE. Por ejemplo:
ValorPeriodoAnterior :=
VAR CorteAnterior = [FechaCorteAnterior]
RETURN
    CALCULATE(
        SUM(Hechos[Valor]),
        FechaCorte[FechaCorte] = CorteAnterior
    )


Con eso puedes trabajar inteligencia de tiempo “personalizada” sin depender de las funciones nativas. 

Si no te funciona o no es lo que preguntaste, si quieres compartir capturas de pantalla de tu modelo, tablas, informe, etc.  Para guiarte de una mejor manera.

Saludos!
0 Votos
Es necesario estar inscrito para dejar tu duda, comentario y/o respuesta

Sobre el alumno

RoxanaSc461

Roxana S.

Cursos completados

Imagen del curso Introducción Práctica a Power BI

Más preguntas sobre el tema

Carga laboral

OctavioSomonte850

Promedio mensual

OctavioSomonte850

Medida DAX

RoxanaSc461

La función CALCULATE no reconoce mis columnas de talbla.

deleted-user-UVUC

medidas

Esme

Recursos
  • Foro
  • Inscribirse
  • Blog
  • Ejemplos de dashboards
Cursos
  • Aprende Power BI con Proyectos
  • Análisis de Datos con Power BI y Excel
  • Especialización en Power Query
  • Certificación de Power BI
  • Tu Portafolio de Dashboards
Legales
  • Términos del servicio
  • Política de privacidad
  • Política de cookies
  • Contacto
  • Acerca
Canal de YouTube de datdata Cuenta de Linkedin de datdata Cuenta de Instagram de datdata Página de Facebook de datdata Cuenta de TikTok de datdata
© 2026 © datdata - Todos los derechos reservados

Confirmar eliminación

Para eliminar esta participación, por favor ingrese su contraseña.