DP-600: diseñar y optimizar jerarquías de fecha en modelos semánticos
Voy a enseñar la habilidad de diseñar y optimizar jerarquías de fecha en modelos semánticos — una competencia esencial en el DP-600. Saber estructurar una dimensión de fecha correctamente mejora el rendimiento, facilita el análisis temporal y evita errores en las funciones de time intelligence.
Lo que necesitas saber
Una jerarquía de fecha típica agrega niveles como Año > Trimestre > Mes > Día. En los modelos semánticos (Tabular/Power BI/Fabric), una dimensión de fecha bien construida permite usar funciones de time intelligence (TOTALYTD, DATESINPERIOD, etc.) y optimizar filtros y agrupaciones. Conceptos clave:
- Tabla de fechas dedicada: no uses una columna de fecha dentro de la fact table; crea una calendar table con una fila por día y claves enteras.
- Clave de enlace: relaciona la fact table con la tabla de fechas mediante una columna entera (por ej., YYYYMMDD) o por un tipo date, dependiendo del storage mode.
- Columnas de soporte: Año, Trimestre (nombre y número), Mes (nombre y número), Día de la semana (nombre y número), AñoFiscal, y un indicador de AñoCompleto (para filtros).
- Jerarquías físicas: define la jerarquía en el modelo (Año > Trimestre > Mes > Día) para permitir drill-down eficiente en los informes.
Ejemplo simple de columnas en una calendar table:
DateKey (int) = 20260910
Date (date) = 2026-09-10
Year = 2026
Quarter = 3
MonthNumber = 9
MonthName = "September"
Day = 10
IsInFullYear = TRUE
En la práctica — paso a paso
Aquí tienes un flujo práctico para crear y optimizar tu jerarquía de fecha en Power BI Desktop o en el semantic model de Fabric.
-
Crear la calendar table
Genera la tabla con todas las fechas que cubran el intervalo de tus datos (ej.: desde la menor InvoiceDate hasta la mayor). En DAX puedes usar:
Calendar = CALENDAR(MIN(Sales[OrderDate]), MAX(Sales[OrderDate]))Pero, para mejor rendimiento, es preferible crear también la DateKey entera y columnas numéricas para ordenar (MonthNumber, QuarterNumber).
-
Añadir columnas de soporte
Crea columnas calculadas (o preferiblemente, en el origen/ETL cuando sea posible) para evitar cálculos en runtime costosos. Ejemplos en DAX:
Year = YEAR(Calendar[Date]) MonthNumber = MONTH(Calendar[Date]) MonthName = FORMAT(Calendar[Date], "MMMM") Quarter = "Q" & FORMAT(QUARTER(Calendar[Date]), "0") DateKey = VALUE(FORMAT(Calendar[Date], "YYYYMMDD"))Preferible: generar estas columnas durante el ETL (Synapse, Dataflow) para reducir la carga en el modelo.
-
Crear jerarquía en el modelo
En Power BI Desktop o en el Model Designer de Fabric, selecciona la tabla de fechas y crea una jerarquía arrastrando las columnas en el orden deseado (Year > Quarter > MonthName > Date). Esto mejora la experiencia de drill-down y permite usar automáticamente niveles en los visuales.
-
Ordenación correcta de las columnas de texto
Asegura que MonthName esté ordenado por MonthNumber; Quarter por QuarterNumber. Sin esto, enero puede aparecer después de septiembre en los informes.
En la vista del modelo: seleccionar MonthName -> Sort by Column -> MonthNumber -
Relaciones y activación de time intelligence
Crea una relación 1:* entre la tabla Date (DateKey o Date) y la fact table. Marca la tabla de fechas como "Date Table" (Mark as Date Table) y define la columna de fecha primaria. Esto permite que DAX use correctamente funciones de time intelligence.
Errores comunes
- Usar la columna de fecha de la fact table como dimensión — causa duplicación, dificultades con múltiples fact tables y limita la reutilización de la calendar table.
- Olvidar ordenar columnas de texto — MonthName mostrado por orden alfabético conduce a informes confusos.
- Calcular demasiadas columnas en el modelo — crear columnas costosas en DAX en lugar de en el ETL afecta el tiempo de procesamiento y el tamaño del modelo.
Cómo practicar
Para practicar, crea un pequeño proyecto: carga una fact table de ventas, construye la calendar table con 5 años de datos, implementa la jerarquía y prueba medidas de time intelligence (YTD, MTD, MoM). Usa el Practice Assessment OFICIAL y GRATUITO de Microsoft para evaluar conocimientos generales del DP-600; consulta también la study guide oficial (ambos gratuitos). Estas herramientas oficiales son las únicas válidas para simulacros oficiales — no uses "dumps".
En resumen
- Crea siempre una tabla de fechas dedicada y relaciónala correctamente con las fact tables.
- Añade columnas numéricas para ordenar y desplaza la lógica al ETL cuando sea posible, reduciendo el procesamiento en el modelo.
- Define jerarquías físicas (Year > Quarter > Month > Day) para mejor experiencia de análisis y rendimiento.
- Marca la tabla como Date Table para habilitar funciones de time intelligence y evitar errores en las medidas temporales.