Hola, gracias por tu consulta y por compartir tu hallazgo.
Entiendo que has creado una tabla calendario utilizando la función DAX `CALENDARAUTO`, y has notado que genera fechas desde el año 1899, lo cual te parece incorrecto o inesperado.
Esto es un comportamiento normal de `CALENDARAUTO` si no se le dan parámetros adicionales. La función `CALENDARAUTO` funciona escaneando todas las columnas de fecha en todo tu modelo de datos (todas las tablas y todas las columnas de fecha) para determinar el rango más temprano y más tardío.
¿Por qué sucede esto?
- Detección de Todas las Columnas de Fecha: Si tienes alguna tabla en tu modelo que contiene fechas antiguas (incluso si son fechas de creación de archivos, fechas de registro de auditoría, o alguna otra columna que no sea tu tabla de hechos principal de ventas o transacciones), `CALENDARAUTO` las detectará.
- Rango Automático: `CALENDARAUTO` genera un rango de fechas continuo desde la fecha más antigua encontrada en *cualquier* columna de fecha de tu modelo hasta la fecha más reciente. Si hay una fecha antigua en alguna tabla (como una fecha de registro del sistema, por ejemplo), esa fecha se convertirá en el inicio del calendario generado.
Solución: Especificar el Rango de Años (Recomendado)
Para evitar que `CALENDARAUTO` incluya años no deseados como 1899, la mejor práctica es usar la función `CALENDAR` y especificar explícitamente el rango de fechas que necesitas.
En lugar de `CALENDARAUTO()`, usarías `CALENDAR()` y especificarías las fechas de inicio y fin:
MiTablaCalendario =
CALENDAR (
DATE ( 2023, 1, 1 ), // Fecha de inicio (Año, Mes, Día) - Ajusta al año más antiguo relevante para ti
DATE ( 2024, 12, 31 ) // Fecha de fin (Año, Mes, Día) - Ajusta al año más reciente que necesites
)
Explicación:
- `CALENDAR(StartDate, EndDate)`: Crea una tabla de una sola columna con todas las fechas consecutivas desde `StartDate` hasta `EndDate`.
- Debes reemplazar `2023, 1, 1` y `2024, 12, 31` con el rango de fechas que sea relevante para tu análisis (por ejemplo, el año más antiguo en tus datos de ventas hasta el año más reciente o un poco más allá si planeas proyecciones).
Al usar `CALENDAR` en lugar de `CALENDARAUTO`, tienes control total sobre el rango de fechas que se genera, evitando así incluir fechas irrelevantes o antiguas.
Los cursos de Datdata que tratan sobre modelado de datos y DAX suelen profundizar en la creación y optimización de tablas calendario, lo cual es fundamental para la inteligencia de tiempo.
Te sugiero visitar:
https://www.datdata.com/cursos/int101/clases/rXwqr6
Esta clase es una introducción a DAX y a la creación de medidas y columnas calculadas, y es muy probable que aborde la creación de tablas calendario de forma detallada, explicando el uso de `CALENDAR` y `CALENDARAUTO`.