Creando DimDate en Power BI – Series DimDate (1/3)

Crear DimDate con Power BI es el aliado perfecto para el data analytics de tu empresa. Todos nuestros modelos de datos tienen una dimensión común, la dimensión de fecha o DimDate. Gracias a la dimensión de la fecha, podemos hacer comparaciones de datos entre rangos de fechas, ver cómo la producción anual de una empresa se ha ido con un vistazo rápido o cualquier funcionalidad que se nos ocurra siempre que haya una relación entre la dimensión de la fecha y la Fact Table.
Creación de la Tabla
Tan pronto como tengamos abierto Power Bi Desktop con nuestra Fact Table cargada, en nuestro caso Disney Movies, podemos comenzar a crear la dimensión de la fecha. Para hacer esto, nos ubicamos en la parte Datos y hacemos clic en Nueva tabla.

Al escribir el siguiente código en la barra de creación, crearemos una tabla con todas las fechas que contenidas entre 2016-01-01 y 2019-12-31.
DimDate =
ADDCOLUMNS (
CALENDAR ("2016-01-01"; "2019-12-31");
"DateInt"; FORMAT ( [Date]; "YYYYMMDD" ))
Si deseamos que el rango de fechas sea dinámico, simplemente debemos modificar la parte CALENDAR. Con la siguiente fórmula tomaríamos desde el 1 de enero desde hace dos años hasta el 31 de diciembre, dentro de dos años.
CALENDAR (DATE(YEAR(TODAY())-2;1;1); DATE(year(TODAY())+2;12;31));
Una vez que se han cargado las columnas principales, podemos comenzar a crear las columnas que usaremos en nuestras visualizaciones de Power Bi con sus respectivas columnas de clasificación. Las columnas de clasificación son obligatorias ya que un gráfico desordenado no tiene valor.
Disordered Graphic vs Order Graphic

Creación de Columnas
Las columnas básicas que no deberían faltar en ninguna dimensión de fecha son las siguientes:
- Year= YEAR ( [Date] )
- MonthNumber= FORMAT ( [Date]; “MM” )
- MonthNameShort= FORMAT ( [Date]; “mmm” )
- MonthNameLong= FORMAT ( [Date]; “mmmm” )
- DayOfWeekNumber= WEEKDAY ( [Date] )
- DayOfWeek= FORMAT ( [Date]; “dddd” )
- DayOfWeekShort= FORMAT ( [Date]; “ddd” )
- Quarter“= “Q” & FORMAT ( [Date]; “Q” )
- YearQuarter= FORMAT ( [Date]; “YYYY” ) & “/Q” & FORMAT ( [Date]; “Q” )

Para crear las nuevas columnas, hacemos clic en Nueva columna e insertamos la fórmula en la barra. Podemos crear tantas columnas como queramos y personalizarlas a nuestro gusto, Power Bi tiene una amplia gama de formatos de fecha.
Cuando se creen las columnas, tendríamos que ordenarlas por orden de columna. Para crear el orden, seleccionamos la columna que queremos ordenar con respecto a otra columna y hacemos clic en Ordenar por columna y seleccionamos la columna de orden.

Si te interesa el mundo de Business Intelligence, no dudes en consultar nuestra página de Data Analytics
Tabla de Relaciones
Una de las opciones que no debemos descuidar es Marcar como tabla de fechas, esta opción indica que es la tabla de fechas del modelo y realiza internamente las siguientes validaciones:
- Contienen valores únicos.
- Contienen valores que no son nulos
- Contienen valores de fecha contiguos (de principio a fin)
- Tienen la misma marca de tiempo en cada valor (si son de la Fecha / Hora)

Para finalizar solo necesitamos relacionar la dimensión de la fecha con la fact table.

Y verificar que la relación funciona correctamente.
En esta página de Power Bi podemos visualizar la producción de Disney por año y las películas con mayor producción.

Aquí os dejo el script de creación de la dimensión de fecha del ejemplo, para que empecéis desde una base a crear vuestras propias dimensiones de fecha.
DimDate =
ADDCOLUMNS (
CALENDAR ("2000-01-01"; "2019-12-31");
"DateInt"; FORMAT ( [Date]; "YYYYMMDD" );
"Year"; YEAR ( [Date] );
"Monthnumber"; FORMAT ( [Date]; "MM" );
"MonthNameShort"; FORMAT ( [Date]; "mmm" );
"MonthNameLong"; FORMAT ( [Date]; "mmmm" );
"DayOfWeekNumber"; WEEKDAY ( [Date] );
"DayOfWeek"; FORMAT ( [Date]; "dddd" );
"DayOfWeekShort"; FORMAT ( [Date]; "ddd" );
"Quarter"; "Q" & FORMAT ( [Date]; "Q" );
"YearQuarter"; FORMAT ( [Date]; "YYYY" ) & "/Q" & FORMAT ( [Date]; "Q" )
)
En el próximo post de la serie, hablaremos sobre las medidas de tiempo y cómo hacerlo rápidamente en DAX.
Serie DimDate:
- Creating DimDate in Power BI – DimDate Series (1/3)
- Working with TIME Functions – INTELLIGENCE – DimDate Series (2/3)
- Display your dates in Power BI – DimDate Series (3/3)
Si quieres que ayudemos a tu negocio o empresa contacta con nosotros en info@aleson-itc.com o llámanos al +34 962 681 242

Business Intelligence Expert Consultant. Specialising in creation of Data Warehouse, Analysis Services, Power BI, SSIS, SSRS and Databricks.