📅

Tablas de Fechas

La tabla más importante de cualquier modelo Power BI. Sin una tabla de fechas correcta, la inteligencia de tiempo no funciona y tus análisis temporales serán incorrectos

Principiante Intermedio

¿Por Qué Necesitas una Tabla de Fechas?

Sin tabla de fechas, la inteligencia de tiempo no funciona

Las funciones DAX de inteligencia de tiempo (TOTALYTD, SAMEPERIODLASTYEAR, DATEADD, etc.) requieren una tabla de fechas marcada como tal. Sin ella, obtendrás errores o resultados incorrectos.

Problemas al usar la fecha directamente de la tabla de hechos:

  • No hay jerarquía Año → Trimestre → Mes → Día automática
  • Las funciones de inteligencia de tiempo no funcionan correctamente
  • No puedes añadir columnas personalizadas (festivos, semanas fiscales, etc.)
  • Si hay fechas nulas o duplicadas, los cálculos son incorrectos
  • Mucho más difícil filtrar por períodos completos
⚠️ Ojo con esto: Aunque Power BI puede generar una tabla de fechas automática (la "jerarquía de fechas" que ves en el panel de campos), esta tabla oculta tiene limitaciones importantes y consume más memoria. Siempre crea tu propia tabla de fechas explícita.

Requisitos de una Tabla de Fechas

Para que Power BI la reconozca como tabla de fechas debe:

  • Tener una columna de tipo Fecha (no DateTime, solo Date)
  • Esa columna no debe tener valores duplicados
  • Esa columna no debe tener valores nulos
  • Debe contener un rango continuo de fechas sin huecos (todos los días del período)
  • El rango debe cubrir todos los años completos de tus datos (del 1/1 al 31/12)
📌 Buena práctica: El rango de tu tabla de fechas debe ser siempre de años completos — desde el 1 de enero del año más antiguo hasta el 31 de diciembre del año más reciente. Si tu dato más antiguo es marzo de 2020, tu tabla debe empezar el 1 de enero de 2020.

Crear una Tabla de Fechas con DAX

CALENDARAUTO — la opción más sencilla

CALENDARAUTO genera automáticamente un rango de fechas basado en las columnas de fecha del modelo. Detecta la fecha mínima y máxima y crea el rango de años completos.

// Tabla de fechas básica con CALENDARAUTO
DimFecha = CALENDARAUTO()

// CALENDARAUTO con mes de fin de año fiscal (ej: año fiscal termina en junio = 6)
DimFecha = CALENDARAUTO(6)

CALENDAR — control total del rango

CALENDAR te permite definir explícitamente la fecha de inicio y fin.

// Rango fijo de fechas
DimFecha = CALENDAR(DATE(2020, 1, 1), DATE(2026, 12, 31))

// Rango dinámico basado en los datos
DimFecha =
CALENDAR(
    DATE(YEAR(MIN(FactVentas[FechaPedido])), 1, 1),
    DATE(YEAR(MAX(FactVentas[FechaPedido])), 12, 31)
)
📋

Columnas que Debe Tener tu Tabla de Fechas

Tabla de fechas completa con columnas calculadas

// Tras crear la tabla con CALENDARAUTO(), añade estas columnas calculadas:

// Columnas básicas
Año = YEAR(DimFecha[Fecha])
Trimestre = QUARTER(DimFecha[Fecha])
Mes Numero = MONTH(DimFecha[Fecha])
Mes Nombre = FORMAT(DimFecha[Fecha], "MMMM")         // "enero", "febrero"...
Mes Corto = FORMAT(DimFecha[Fecha], "MMM")            // "ene", "feb"...
Semana = WEEKNUM(DimFecha[Fecha])
Dia = DAY(DimFecha[Fecha])
Dia Semana = FORMAT(DimFecha[Fecha], "DDDD")          // "lunes", "martes"...
Numero Dia Semana = WEEKDAY(DimFecha[Fecha], 2)       // 1=lunes (ISO)

// Columnas útiles para análisis
Año-Mes = FORMAT(DimFecha[Fecha], "YYYY-MM")          // "2024-03"
Año-Trimestre = "Q" & QUARTER(DimFecha[Fecha]) & " " & YEAR(DimFecha[Fecha])
Es Fin Semana = IF(WEEKDAY(DimFecha[Fecha], 2) >= 6, TRUE, FALSE)
Es Hoy o Anterior = IF(DimFecha[Fecha] <= TODAY(), TRUE, FALSE)

// ID numérico para ordenar (útil como clave)
IDFecha = YEAR(DimFecha[Fecha]) * 10000
        + MONTH(DimFecha[Fecha]) * 100
        + DAY(DimFecha[Fecha])             // Resultado: 20240315
🏷️

Marcar como Tabla de Fechas

Paso imprescindible para activar la inteligencia de tiempo

Después de crear la tabla y las columnas, debes marcarla explícitamente como tabla de fechas en Power BI Desktop:

  • Selecciona la tabla DimFecha en el panel de datos
  • Ve a la cinta "Herramientas de tabla" (aparece al seleccionar la tabla)
  • Haz clic en "Marcar como tabla de fechas"
  • Selecciona la columna Fecha como columna de fecha única
  • Power BI validará que cumple los requisitos (sin duplicados, sin nulos, continua)

¿Qué desactiva al marcar la tabla?

Al marcar una tabla de fechas explícita, Power BI desactiva las jerarquías de fecha automáticas para esa tabla. Esto es correcto — quieres usar tu propia jerarquía personalizada.

🏢

Calendario Fiscal

Cuando tu año fiscal no coincide con el año natural

Muchas empresas tienen un año fiscal que empieza en un mes distinto a enero. Por ejemplo: año fiscal de julio a junio (Q1 = Jul-Sep, Q2 = Oct-Dic, Q3 = Ene-Mar, Q4 = Abr-Jun).

// Ejemplo: año fiscal que empieza en julio (mes 7)
Año Fiscal =
IF(
    MONTH(DimFecha[Fecha]) >= 7,
    YEAR(DimFecha[Fecha]) + 1,
    YEAR(DimFecha[Fecha])
)
// Resultado: julio 2024 → Año Fiscal 2025

Trimestre Fiscal =
VAR mes = MONTH(DimFecha[Fecha])
VAR mesAjustado = MOD(mes - 7 + 12, 12) + 1
RETURN
    "FQ" & INT((mesAjustado - 1) / 3) + 1 & " FY" & [Año Fiscal]
// Resultado: julio 2024 → "FQ1 FY2025"
💡 Tip kawaii: Si tienes tanto análisis de calendario natural como fiscal, añade AMBOS conjuntos de columnas a la misma tabla DimFecha. Así tienes un solo modelo con doble perspectiva temporal sin necesidad de dos tablas de fechas. 🌸
🚀 ¡Tabla de fechas lista! Con una DimFecha correcta, ahora puedes usar toda la potencia de las funciones de inteligencia de tiempo DAX (TOTALYTD, SAMEPERIODLASTYEAR, DATEADD y 40+ más). El siguiente tema de modelado recomendado es Relaciones entre tablas para conectar bien DimFecha con tus tablas de hechos.