[PowerBi] ¿Para que sirve “marcar como tabla fecha”?

Tal vez muchos no lo sabían pero el motor de Power BI Desktop corre en segundo plano un identificador columnas que representan fechas y, luego, crea jerarquías de fechas y otros metadatos propicios para su modelo de forma automática. Podemos ver más de ello en este post.

La mayoría de los que trabajamos en Bi preferimos crear nuestras propias tablas de fechas, lo cual es mejor práctica. Resulta que Power BI Desktop  puede especificar la tabla que quiera para que su modelo la use como tabla de fechas y, después, crear objetos visuales, tablas, medidas rápidas, etc. relacionados con las fechas utilizando los datos de fechas de la tabla. Cuando se especifique su propia tabla de fechas, tendrá el control de las jerarquías de fechas creadas en su modelo, y las usará en las medidas rápidas y otras operaciones que utilizan la tabla de fechas de su modelo.

¿Que diferencia hay entre marcar mi tabla fecha y no hacerlo?

Marcar una tabla como fecha tiene un pequeño truco que nos ayudaría a dar una ligera mejora en la performance. Si bien el modelo comprendería a que refiere la tabla para pensarla y utilizarla como tal, tiene un detalle adicional que puede ayudarnos.

El objetivo de una tabla fecha es ayudarnos a controlar la línea de tiempo de un modelo de forma personalizada con funciones avanzadas de inteligencia de tiempo. Ésto podemos lograrlo sin marcar nuestra tabla como tabla fecha. Simplemente creando la tabla calendario y relacionando el campo fecha con nuestra columna fecha de la "tabla de hecho" como si fuera una dimensión más. Cuando relacionamos dos columnas tipo fecha de esta forma, el modelo asume que una de ellas es la tabla fecha para la columna puntual de la otra. De ésta forma generamos una relación en el modelo de dos campos tipo fecha que nos ayudarán a construir los cálculos deseados.

Entonces, ¿por qué marcaríamos la tabla calendario como tabla fecha? Consideremos lo siguiente para poder responder la pregunta. Las relaciones entre tablas son almacenadas en el modelo tabular con un peso particular. Las mismas tendrán una mejor performance y menor peso según su tipo de datos. El dato más veloz para una relación es el entero. Una relación entre enteros será más liviana y performante. Por esta razón vamos a encontrar ejemplos en el mundo de Bi para tabla fecha cuya primera columna es "date key".

image

Ésta primera columna esta pensada para ser responsable de la relación de fechas con otra columna a modo de número entero para liberar el modelo de campos fecha y mantenerlo en una única tabla.

Si relacionamos ésta columna con otra exactamente igual del modelo, no podremos realizar cálculos inteligentes de fechas. El relacionar dos enteros entre fechas no determina para Power Bi nada. La columna fecha de nuestro hecho sigue teniendo por detrás la fecha automática de power bi o ninguna.

Para ésta condición vamos a marcar como tabla fecha la tabla que contiene el "datekey". Desde ese momento Power Bi entiende que nuestra tabla es tabla fecha aun cuando nuestra relación no es mediante fechas sino mediante enteros. A partir de ese momento que la marcamos podremos realizar funciones dax con time intelligence libremente.

Ahora ya sabemos para que sirve marcar como tabla fecha y aprendimos un poco de mejorar performance sobre nuestro modelo. Cabe destacar que para pequeños y medianos modelos no hay problemas de performance si usamos relaciones de fechas.