[DataModeling] Días habiles o no laborales

En el mundo de bi hay un pedido muy frecuente y deseado por todos. El mismo es poder diferenciar los días hábiles de los no laborales o feriados para determinados conteos y cálculos.

En este artículo vamos a ver como trabajar con esta solución tan requerida. Lo que debo advertir es que se trata de cómo modelar y no de como obtener los datos. El enfoque del mismo es sobre data modeling a partir de los datos. Si no tienen los datos van a tener que generarlos a mano o encontrar la forma de extraerlos de algún sitio web / app. Les dejo un archivo de feriados 2020 en csv en mi github sacados de la nación.

Bien lo primero que necesitamos es comprender los datos. Como ya habremos visto en nuestros posts anteriores vamos a generar una tabla fecha para trabajar con ellos. Si no recuerdas como generar una revisa mi antiguo post. 

Ejemplo dimensión fecha:

image

Para poder realizar el análisis de días es necesario tener otra tabla fecha que contendrá los días laborales o no laborales.

Ejemplo hábiles o laborales:

image

Ejemplo no laborales:

image

Con ésta información vamos a darle un remodelado a nuestra dimensión fecha. Cabe destacar que mientras más temprano hacemos nuestras combinaciones mejor. Me refiero a que apliquemos el data modeling según esta lista de prioridades en la medida que nos sea posible:

  1. Motor de Base de datos
  2. Power Query (editor de consulta)
  3. DAX

Para cualquiera de estos casos la idea es poder hacer un LEFT JOIN sobre la dimensión fecha inicial con nuestro ejemplo de días laborales o no laborables para crear una nueva columna que nos ayude a identificar dicha fecha. El resultado final sería algo semejante a la siguiente imagen.

image

De esta manera los cálculos que necesitemos aplicar mediante dax serían sencillamente filtrados por el valor de una columna en la dimensión fecha. Tengan en cuenta que, si bien ésta es la mejor forma, no es la única forma.

Consideraciones: a menos que sepan de donde extraer los datos la tabla de no laborales tendría que se generada manualmente por alguna persona. Power query podría ayudarnos a reconocer los días sábados y domingos automáticamente pero si queremos tener cuenta los feriados, si o si deberías cargarla a mano o escrapearlos. Por este año están cubiertos con el archivo que deje pero para la historia o los próximos están por su cuenta.

¡Espero que pronto hagan su tabla de feriados y días no laborales para poder calcular medidas con éste requerimiento!