Script – Poblar la tabla de dimensión de tiempo para un datawarehouse

En mi experiencia, todos los datawarehouse que he diseñado incluyen la dimensión de tiempo. El análisis por fechas es básico en la mayoría de organizaciones que analizan sus datos

La dimensión tiempo permite establecer los niveles de análisis temporal y las jerarquías de tiempo para la agregación de los hechos. Los niveles y jerarquías pueden variar según las necesidades de análisis y la granularidad de las métricas, pero casi siempre son los mismos: Semanas, meses, años; trimestres y semestres

Al construir esta dimensión, se puede enriquecer las posibilidades de análisis ofreciendo diferentes valores a cada atributo de la fecha. Así podemos analizar en base al número de mes o el número de semana. O podemos agrupar usando el nombre del día de la semana o el nombre corto del mes. O podemos contar con el nombre del mes en varios idiomas si el diseño es para una corporación internacional

Bueno, aquí les compartimos una función de valor de tabla, de tipo multi-sentencia, que calcula varios atributos de una fecha, para poblar la dimensión tiempo de un datawarehouse. Hemos preferido utilizar una función porque se puede invocar mediante la sentencia SELECT, de modo que podemos listar solo las columnas que nos resulten útiles; además podemos aplicar un filtro con la sentencia WHERE si queremos listar solo ciertos registros que cumplan con alguna condición

Por diseño, a esta función se le pasa como parámetro el año del cual queremos obtener las fechas, y mediante una Expresión Común de tabla o CTE, del tipo recursivo, barremos las fechas desde un valor inicial (1 de enero) a un valor final (31 de diciembre)

Ojo: este script no crea la tabla de dimensión. Asumimos que la tabla ya existe y que vamos a usar la función para llenar dicha tabla

Pues aquí va:

Prestar atención al CTE Recursivo, y a la opción MAXRECURSION. Por defecto SQL Server permite hasta 100 niveles de recursividad. Pero como aquí estamos calculando valores para todo el año, se le asigna esta opción con el valor 366, para calcular todos los días, incluyendo los años bisiestos

Para obtener las fechas del año 2017, ejecutamos una consulta a la función, de la siguiente manera:

 

Con SET LANGUAGE nos aseguramos que los textos aparezcan en castellano. El resultado parcial es este:

clip_image002

Esperamos que les sea útil en la implementación de sus proyectos de BI o cualquier otro que necesite atributos de fecha

Hasta la próxima

Deja un comentario

Tu dirección de correo electrónico no será publicada.