MATERIA:
DATA WAREHOUSE
TEMA:
GRANULARIDAD
PROFESOR:
ING. FLORES OLIVEROS RICARDO
ALUMNOS:
PROBLEMÁTICA .................................................................................................................. 3
OBJETIVO GENERAL ........................................................................................................... 3
OBJETIVOS ESPECÍFICOS ................................................................................................. 3
JUSTIFICACION ................................................................................................................... 3
METODOLOGIA DE RALPH KIMBALL ................................................................................. 5
PARA UN PROYECTO DE DATAWAREHOUSE .................................................................. 5
MARCO TEORICO .............................................................................................................. 35
RESULTADOS .................................................................................................................... 48
CONCLUSION .................................................................................................................... 59
BIBLIOGRAFIA / LINKOGRAFIA ......................................................................................... 60
Página | 2
PROBLEMÁTICA
La granularidad afecta a la cardinalidad, tanto de las dimensiones como de la tabla de
hechos, a mayor granularidad (grano más fino) mayor será el número de registros final
de la tabla de hechos.
Cuando la granularidad es mayor, es frecuente que se desee disponer de subtotales
parciales, es decir, si tenemos una tabla de hechos con las ventas por días, podríamos
interesar disponer de los totales semanales o mensuales, estos datos se pueden
calcular haciendo sumas parciales, pero es frecuente añadir a la tabla de hechos
registros donde se almacenan dichos cálculos para no tener que repetirlos cada vez
que se requieran y mejorar así el rendimiento de la aplicación. En este caso se
dispondrá en la misma tabla de hechos de datos de grano fino y de grano más grueso
aumentando aún más la cardinalidad de la tabla.
OBJETIVO GENERAL
Definir la descripción de componentes (Granularidad) con la que se debe
trabajar el nivel seleccionado con base en las necesidades que deben suplir
los desarrolladores de Software representada en el nivel de detalle al que se
desea almacenar la información sobre el negocio que se esté analizando.
OBJETIVOS ESPECÍFICOS
Aprender a identificar la granularidad de las tablas de hechos
Identificar los niveles de granularidad
Indicar el grado de detalle asociado a un hecho particular.
Analizar los factores como la carga del procesador, espacio de
almacenamiento y satisfacer a cabalidad los requerimientos del cliente.
JUSTIFICACION
El aspecto más importante del diseño de un DataWarehouse es la granularidad, que
se refiere al nivel de detalle o sumarización mantenido en el DatawWarehouse, a
mayor detalle menor nivel de granularidad y a menor detalle mayor nivel de
granularidad.
La razón por la cual la granularidad es el principal tema de diseño en el entorno del
DataWarehouse es que afecta al volumen de datos que reside en el DataWarehouse
y al tipo de consultas que pueden ser respondidas.
Muchas veces se necesita eficiencia en el almacenamiento y acceso a los datos y
analizar datos en gran detalle. Cuando una organización tiene grandes cantidades de
datos, tiene sentido considerar dos niveles de granularidad en la porción detallada del
DataWarehouse: datos levemente detallados y datos detallados de archivo. En el nivel
de datos detallados de archivo, se almacena todo el detalle que viene del entorno
operacional, por esta razón se almacenan en cinta.
Página | 3
Por los costos, eficiencia, fácil acceso y habilidad para responder consultas, el nivel
dual de datos es la mejor elección arquitectónica para el nivel detallado del
DataWarehouse para muchos negocios. Solamente cuando un negocio tiene una
cantidad de datos relativamente pequeña en el DataWarehouse puede intentarse un
nivel de datos simp
Página | 4
METODOLOGIA DE RALPH KIMBALL
PARA UN PROYECTO DE DATAWAREHOUSE
La metodología para el desarrollo del proyecto será la establecida por Ralph Kimball,
quien es autoridad en el campo de las bodegas de datos y considerado como uno
de los padres de este concepto. Kimball se ha dedicado al desarrollo de su
metodología para que este concepto sea correctamente aplicado en las
organizaciones, y se asegure la calidad de este tipo de proyectos.
Existen varios escenarios posibles en los que surge un proyecto de bodega de datos
para una empresa. Es importante identificar el escenario para determinar el alcance
y definición del proyecto. Los escenarios, originados por una demanda del proyecto
en una empresa son los siguientes:
Página | 5
En todos los escenarios es determinante contar con sponsors o patrocinadores
internos del proyecto para lograr el éxito. Sino se cuenta con un patrocinador
interno de la empresa involucrado en la demanda es preferible posponer el
proyecto.
Patrocinio de la gerencia del negocio: Al contar con este patrocinio se tiene una
visión del impacto que tendrá la bodega de datos en la empresa. Los gerentes
son líderes influyentes dentro de la organización y determinarán el apoyo y soporte
al proyecto de los demás miembros de la organización. Es preferible tener varios
patrocinadores que uno solo, en caso de cambios en la organización o necesidad
un apoyo más fuerte.
Para definir este enfoque la base debe ser los requerimientos del negocio, no un
cronograma. Para la definición del enfoque es importante seguir los siguientes
parámetros:
Una vez el área de tecnología y negocios han acordado un enfoque, este se debe
documentar.
Página | 7
Los proyectos de bodegas de datos típicamente tienen un impacto en el incremento
de ingresos y ganancias, más que en reducción de costos.
Página | 8
Análisis de requerimientos
Acercamiento a la definición de requerimientos
Para entender mejor los requerimientos se debe empezar por hablar con los usuarios
de lnegocio. No se debe preguntar a estos usuarios, qué datos quieren que aparezcan
en el datamart, sino hablar con ellos sobre sus trabajos, objetivos y retos e intentar
conocer cómo toman decisiones, actualmente y en el futuro.
Se debe considerar lo que requiere el negocio comparando estos requerimientos con
los datos disponibles en las bases de datos que servirán como fuente, para lograr el
soporte de estos requerimientos.
Preparación de la entrevista
Página | 20
Desarrollo del cuestionario
El líder de la entrevista debe desarrollar el cuestionario antes de iniciar la entrevista.
Se deben desarrollar varios cuestionarios que serán aplicados dependiendo del rol de
los entrevistados dentro de la empresa. El cuestionario debe ser de una sola página,
para evitar exceso de tiempo de entrevistas.
Modelamiento dimensional
Modelo entidad relación
El modelo entidad relación (ER) es una técnica poderosa para diseñar
lógicamente sistemas para el procesamiento de transacciones OLTP (procesamiento
transaccional en línea). Siempre va encaminado a la eliminación de la redundancia,
lo que permite que la manipulación sobre la base de datos tenga que hacerse en un
solo lugar y sea mucho más rápido ya que en el momento en que la transacción
requiera insertar, adicionar, borrar o modificar un dato es necesario que lo haga en un
solo lugar y no en múltiples. Esto contribuye también al almacenamiento de grandes
cantidades de datos dentro de las bases de datos relacionales, a través del
proceso de normalización. Por eso es perfecto para la inserción y actualización de
la información.
Este es un modelo excelente para registrar transacciones y administración de
tareas operativas. Sin embargo, para el modelamiento de una bodega de datos
presenta varios problemas. Los usuarios finales no entienden ni recuerdan un
diagrama entidad relación. Nos es posible que los usuarios finales naveguen sobre el
modelo. El uso del modelo entidad relación va en contra del objetivo principal de una
bodega de datos, de proporcionar datos de forma intuitiva y con un buen desempeño
y tiempos de respuesta.
Modelo Dimensional
El modelo dimensional es una técnica de diseño lógico que busca presentar los datos
de una forma intuitiva y que proporcione acceso de alto desempeño. Cada modelo
dimensional se compone de una tabla con múltiples llaves foráneas, llamada tabla de
hechos (fact table), y un conjunto de tablas más pequeñas, llamadas tablas de
dimensión.
Los atributos de las tablas de dimensión son las fuentes de las restricciones de
búsqueda necesarias para consultar una bodega de datos. Son utilizadas como título
de atributo de las filas resultantes de queries de SQL.
Existen dos modelos dimensionales que predominan en las soluciones de bodegas
de datos: el modelo estrella y el modelo copo de nieve. En el modelo estrella, como
se ve en la figura 5 se tiene una tabla de hechos y en ella llaves foráneas a cada una
Página | 21
de las tablas de dimensión que tiene el modelo. Es decir, cada tabla dimensional
está directamente relacionada a la tabla de hechos
Modelo estrella
Una dimensión es modelada de forma copo de nieve cuando los campos de baja
cardinalidad de la dimensión han sido removidos a tablas separadas y unidas a la
tabla original con llaves foráneas . En este modelo la tabla de hechos no tendrá llaves
foráneas a todas las demás tablas como en el caso de la estrella. Las nuevas tablas
no estarán conectadas con la tabla de hechos sino con las dimensionales
establecidas.
Página | 22
utilizarán las mismas tablas de dimensiones, es importante que las tablas de
dimensiones y hechos cumplan con las mismas especificaciones, como su
granularidad. Estas dimensiones son llamadas dimensiones conformes (conformed
dimensions). Se caracterizan por cumplir estas condiciones.
1. Una tabla de dimensión puede ser usada con cualquier tabla de hechos de la
misma base de datos
2. Las interfaces de usuario y contenido de datos son consistentes para
cualquier uso de la dimensión.
3. Hay una interpretación consistente de atributos, por lo tanto, se obtiene la
misma interpretación de la tabla en cualquier datamart.
Página | 23
Hechos
Los hechos son medidas de las variables que se consideran. Un hecho puede ser
el valor de una factura con sus respectivas relaciones: la factura es generada a un
cliente, correspondiente a un producto, creada en una sucursal.
Dimensiones
Los atributos de tipo texto que describen cosas son organizados en dimensiones.
Es necesario establecer un criterio puramente de diseño y basado en los
requerimientos del negocio para establecer los atributos que se incluyen como
dimensiones y los que se pueden descartar al realizar la bodega de datos.
Los atributos dimensionales, servirán como fuente para las restricciones y
encabezados de filas en los reportes. Todos los atributos dimensionales son
igualmente candidatos a ser encabezados de filas en los reportes.
Al agregar restricciones a una búsqueda o reporte, se está haciendo un drilling down,
es decir se está estableciendo una nueva restricción en una búsqueda para
obtener un mayor nivel de detalle. Un drill down eficiente mezcla atributos de las
diferentes dimensiones, para realizar reportes realmente robustos.
Llaves subrogadas
Todas las llaves de las tablas de la bodega de datos deben ser llaves subrogadas, es
decir no deben significar nada respecto a las características de su contenido ni a su
fuente en los sistemas fuente. No se deben utilizar las llaves originales de un sistema
fuente del cual fueron extraídas. Estas llaves subrogadas se manejan como enteros.
1. El datamart.
2. La granularidad de la tabla de hechos.
Página | 24
3. Las dimensiones.
4. Los hechos.
Página | 25
3. Selección de dimensiones.
Generalmente la granularidad determina unas dimensiones mínimas e iniciales. Al
agregar nuevas dimensiones los atributos de estas deben cumplir con la misma
granularidad que se ha definido. La granularidad de un dimensión no puede ser
menor que la granularidad de la tabla de hechos.
Aspectos de arquitectura
Para hacer el diseño de la arquitectura se debe comenzar analizando los sistemas
legacy actuales, estos deben ser consistentes y manejar de forma correcta sus
transacciones, pues en la metodología del desarrollo del DWH (Data warehouse)
se toma como hecho que estos sistemas son confiables.
Para hacer el diseño de la arquitectura se debe comenzar analizando los sistemas
legacy actuales, estos deben ser consistentes y manejar de forma correcta sus
transacciones, pues en la metodología del desarrollo del DWH se toma como hecho
que estos sistemas son confiables.
Página | 26
NIVEL DE DETALLE Datos (el qué) Back Room(el Front Room (el Infraestructura (el
como) como) donde)
Auditoria para los Que información se Como se hará el ¿Cuales son los ¿Que niveles
requerimientos del necesita para tomar proceso ETL y como principales retos que de DWH y
negocio mejores decisiones del se tendrán los datos enfrenta el negocio? sistemas se
negocio?, disponibles para los requieren para
usuarios? ¿Como se quieren tener éxito?
¿Cómo se conectarán analizar los datos?
los componentes de ¿Cómo se hace ¿Cuáles
datos en la actualmente? existen
arquitectura de bus? actualmente?
Modelos y Modelo dimensional: ¿Que características ¿Que requerirán los ¿Cual es el origen y
documentos de especificas se usuarios para cargar destino de los datos
Arquitectura ¿Cuales son las necesitaran para la información de
principales entidades tener los datos en una forma útil? ¿Se tiene suficiente
que componen esta una forma útil en los capacidades de
información y como se lugares apropiados? ¿Qué clases de procesamiento y
relacionan? análisis y reportes se almacenamiento?
¿Cuáles son deben proveer y
¿Cómo se deben los principales cuales son las
estructurar estas almacenes de prioridades?
entidades? datos y donde
deben estar
localizados?
Especificaciones y Modelos lógicos y ¿Que estándares y ¿Cuales son las ¿Como se interactúa
modelos físicos: con estas
productos proveen especificaciones características?,
¿Cuales son los las características de reportes
elementos requeridas?, incluyendo filas, ¿Qué utilidades
individuales, sus ¿Cómo se columnas, existen en el sistema,
derivaciones y reglas relacionaran?, secciones, API,s etc?
para la derivación? encabezados,
¿Cuáles son los etc..?,
¿Cuáles son los estándares para
recursos y como se desarrollo, ¿Quién las
mapear a los administración necesita, que tan
destinos? de codigo y a menudo?
nombres?
Página | 27
y la infraestructura. Estas áreas de la arquitectura son interceptadas por filas que
nos indican el detalle del incremento.
Definición: Columnas
Datos: El contenido del DWH son datos. Estos se refieren a todo el contenido físico
del este(DWH) que mas adelante se la hará un tratamiento para permitir ver análisis
multidimensionales y reportes útiles que apoyen la toma de decisiones. Los
Datos guardan toda la información del ambiente del DWH y de las fuentes que surten
a este.
Técnica: Esta área corresponde a los procesos y a las herramientas que se aplicaran
sobre los datos. Esta área se encarga a de responder a la preguntas “Como”.
Por ejemplo ¿Cómo vamos a extraer los datos de la fuentes?, ¿Cómo los podemos
organizar de forma que podamos hacer análisis conforme a los requerimientos del
negocio?, entre otras. Esto se enfoca principalmente a las herramientas, al
desarrollo del DWH y al mantenimiento del mismo. Para garantizar un mejor
funcionamiento del área técnica estas se divide en:
El Back Room : Es el área del DWH responsable de extraer y preparar los
datos.
El Front Room: Es el área del DWH responsable de mostrarle a los usuarios
los resultados con los datos analizados y examinados, listo para que se puedan
ser utilizados.
Infraestructura: Corresponden la las plataformas sobre las que se ejecutan los
servidores de base de datos, los servidores de aplicaciones y donde se ejecutan
los procesos. La infraestructura es la planta física del DWH, se refiere principalmente
al hardware utilizado para el desarrollo del proyecto.
Página | 28
Nivel de modelos de arquitectura: Este es el primer donde se piensa en la forma de
responder a los requerimientos.
Página | 29
Paso 2. Herramientas ETL
Las extracciones típicamente se escriben en el lenguaje de la fuente de los
datos. Existen herramientas que realizan todo el proceso de extracción,
transformación y carga que buscan minimizar el tiempo requerido para estas tareas.
Estas herramientas implican un costo por licencias y posibles incompatibilidades o
dificultades con transformaciones complejas que fuesen requeridas para el proceso.
Ya se haga el proceso con código desarrollado, o herramientas existentes, es
determinante realizar prácticas que mejoren el rendimiento del proceso, como
ordenar los datos o cargarlos de forma rápida para cargas masivas en las bases de
datos.
Página | 30
el servidor del proceso, transformar los datos del archivo y cargar el archivo en la base
de datos utilizada para transformar y cargar datos.
Página | 31
Se crea un nuevo campo en la dimensión que contenga el antiguo valor del
dato modificado y se actualiza la dimensión con el nuevo contenido.
Mejoramiento de datos.
Para garantizar el uso de los mejores datos posibles para la bodega, se deben tener
en cuenta los siguientes pasos:
Identificar la fuente de datos con la mejor calidad: Es posible que se encuentren
varias fuentes con los mismos datos, pero en algunas se tenga mejor calidad
de los mismos.
Identificar variaciones en palabras: Como errores de ortografía y mayúsculas y
minúsculas.
Discutir problemas de datos con el equipo.
Arreglar los problemas de datos en las fuentes cuando sea posible, en vez de
hacerlo en el proceso ETL o directamente a la bodega.
- No arreglar todos los problemas. Si existen muchos problemas en las
fuentes, arreglarlos en el proceso ETL irá en contra del rendimiento, estos
problemas deben ser responsabilidad de los sistemas fuentes.
Realizar tareas de limpieza sobre los datos
Página | 34
MARCO TEORICO
Página | 36
Datamart, proporciona información a un área específica de la organización
Explotación
Es importante recordar que la Bodega de Datos no es un fin en sí misma, sino que es
un medio para solucionar una necesidad: el análisis de información y la toma de
decisiones a través de los datos de la empresa, objetivo que se logra con el proceso
de explotación de la bodega de datos.
En esta etapa es donde se desarrolla la inteligencia del Negocio y por lo tanto es un
componente esencial del data warehouse, ya que es el punto de contacto directo con
el usuario final, quien es el encargado de tomar decisiones o acciones que redundan
en beneficio de la compañía y en el ROI (Retorno de la Inversión) del Data
Warehouse.
Las herramientas utilizadas para el desarrollo de inteligencia del negocio pueden
incluir software de consultas, generadores de reportes, procesamiento analítico
en línea, herramientas de minería de datos, etc., dependiendo de los tipos de
usuarios y sus requerimientos particulares. Sin embargo, se hace necesaria la
integración de varias herramientas puesto que una sola no satisface todos los
requerimientos.
Los niveles de aplicaciones típicas en esta etapa son: Consultas e Informes,
Olap, minería de datos, Sistemas de Información Ejecutiva, y Visualización
geográfica.
Página | 38
Análisis OLAP
OLAP, (On-Line Analytical Processing). El Procesamiento Analítico en Línea es
la técnica que permite ver y manipular los datos por dimensiones, proveyendo
a los gerentes y analistas fácil acceso a la información con el fin de soportar el
proceso de toma de decisión. En esta técnica de análisis, en lugar de ejecutar
múltiples consultas, los datos son estructurados para permitir un acceso rápido y fácil
a las respuestas de las preguntas que son típicamente formuladas. De esta manera,
Olap, brinda flexibilidad en la visualización de la información.
Las herramientas OLAP pueden soportar requerimientos complejos de análisis,
analizar datos desde diferentes perspectivas y soportar análisis complejos contra
un volumen determinado de datos. Su objetivo fundamental es proveer al usuario
final el fácil análisis de los datos, con la potencia y confiabilidad de una base de datos
corporativa, y con la posibilidad de ver los datos desde diversos puntos de vista
o dimensiones. Permite vistas reformateadas y calculadas sin el riesgo de perder o
corromper los datos originales y hace que la información pueda ser compartida por
varios usuarios sin tener que duplicar archivos. En muchos casos los usuarios pueden
adicionar o cambiar datos sin el riesgo de sobrescribir la información original.
El uso más común de estas herramientas en una empresa se da en el análisis de
ventas y compras de materia prima. Gracias a este análisis se evalúa la rentabilidad
de productos, capacidad de producción o la demanda. Estos aspectos dependen
directamente de los requerimientos del negocio específicos para cada empresa.
Las herramientas OLAP están dirigidas principalmente a los usuarios finales por lo
que requieren de una interfaz simple y deben tener una buena integración con los
sistemas que las alimentan.
Conceptos y Componentes
1. Cubo
OLAP efectúa el almacenamiento lógico de los datos en arreglos ó matrices
multidimensionales denominadas cubos. El cubo contiene los datos que son de
interés para los usuarios; organiza la información dentro de dimensiones y medidas
en una estructura multidimensional para soportar las preguntas que tienen los
usuarios acerca de los datos de su compañía. Además proporcionan un mecanismo
para la consulta de datos con rapidez y con una respuesta uniforme ante diferentes
cantidades de datos que contenga el cubo o por la complejidad de una consulta.
Página | 39
Cubo tridimensional: Geografía, producto, tiempo.4
2. Medida
La medida es el valor que toma determinada variable que se está analizando.
Las medidas son resultados cuantificables, o indicadores clave de desempeño
usados para determinar el éxito de una operación de negocios. Orientan las
respuestas a preguntas relacionadas con cuestiones numéricas como la cantidad,
valor o costo
Página | 40
En el caso de la figura 4 se tienen tres medidas, indicando que se vendieron
1930 unidades, a un valor de venta de 6745 y con costo de 5831. Un cubo puede
contener una o varias medidas, dependiendo del diseño y los requerimientos.
Existen dos tipos de medidas:
Medida regular: toma su dato directamente de una fuente disponible. Es un
compendio de información que ya se tiene, tal como el número de unidades
vendidas, ingresos, gastos, niveles de inventario.
Medida calculada: obtiene como resultado un nuevo dato numérico para medidas
que no están en una fuente directa disponible. Es derivada de otras medidas.
Ejemplos de este tipo de medidas son: ganancia (ingresos – costos), margen de
ganancia (ingreso – costo
/ingreso), tiempo promedio de espera ( fecha de entrega – fecha de la orden), etc.
3. Dimensión
Los atributos de tipo texto que describen cosas son organizados en dimensiones.
Es necesario establecer un criterio puramente de diseño y basado en los
requerimientos del negocio para establecer los atributos que se incluyen como
dimensiones y los que se pueden descartar al realizar la bodega de datos.
4. Nivel
Página | 41
DESARROLLO
Página | 42
1. Determinar la granularidad de la tabla de hechos .
2. Determinar cómo manejar múltiples granos separados .
3. Determinar el tipo de tabla de hechos para usar .
4. Verificar la atomicidad de tus granos .
5. Determinar las dimensiones y medidas de alto nivel en función de las
definiciones de grano .
6. Crear un informe de las definiciones de grano .
Página | 43
Manejo de múltiples granos separados
Determine si hay múltiples granos asociados con el proceso comercial para el cual
se está diseñando el modelo dimensional. Puede haber más de una definición de
grano asociada con un único proceso comercial. En estos casos, se debe diseñar
tablas de hechos separadas con granos separados. No hay que forzar todas las
medidas en una sola tabla de hechos.
Se pueden manejar diferentes granularidades de datos mediante el uso de varias
tablas de hechos (tablas diarias, mensuales y anuales, por ejemplo). Además, hay
que tener en cuenta la cantidad de datos, el espacio y los requisitos de rendimiento
cuando decidamos cómo manejar granularidades múltiples.
Para determinar si se deben usar una o varias tablas de hechos, hay que tener en
cuenta los siguientes criterios:
Considera las medidas. Decidir si se agrupan las medidas en una tabla de
hechos o separar tablas de hecho con diferentes granos.
¿Hay varios sistemas fuente OLTP involucrados? Cada sistema fuente está
diseñado con un propósito particular y específico. Si dos sistemas de origen
no tienen objetivos diferentes, se debe consolidar los sistemas en una sola
fuente. A su vez se debe mantener los sistemas separados, cada sistema
fuente atiende a un requisito particular de la empresa. Si los procesos
comerciales incluyen la gestión de pedidos, el inventario de la tienda o el
inventario del almacén, probablemente se trate de sistemas fuente
separados. En este caso, se debe usar tablas de hechos separadas.
Determinar si se trata de procesos comerciales múltiples y no
relacionados. Crear tablas de hechos separadas para procesos comerciales
no relacionados. Si un único proceso de negocio requiere diferentes niveles
de granularidad, es necesario crear tablas de hechos separadas para
manejar esos niveles.
Si una dimensión no es fiel a la definición de grano, diseñar una nueva tabla
de hechos con su propia definición de grano.
Considerar el tiempo y la secuencia de eventos. Es posible que se necesite
procesos separados para manejar un solo evento. Por ejemplo, una empresa
comercializa un producto. Los clientes piden los productos. El departamento
de cuentas por cobrar produce una factura. El cliente paga la
factura. Después de la compra, el cliente puede devolver algunos de los
productos o enviar algunos de los productos para reparaciones. Si alguno de
los productos está fuera de garantía, este proceso requiere nuevos
cargos. Varios procesos están involucrados en la secuencia del evento de
compra individual. Cada uno de estos procesos probablemente trabaje con
un punto diferente en el tiempo. Cada uno de estos procesos se maneja
usando tablas de hechos separadas.
Página | 44
Múltiples granularidades en una sola tabla de hechos
Si se usan múltiples granos en una tabla de hechos, es necesario agregar una
columna llamada indicador de granularidad. Esta columna indicaría el grano de la
tabla. La columna define si la información se almacena a nivel diario, semanal,
mensual o anual.
Nota
Podemos almacenar granos múltiples en una sola tabla de hechos, pero este
enfoque no es recomendable. En cambio, se recomienda diseñar tablas de
hechos separadas y esquemas de estrellas para cada definición de grano.
Por ejemplo, si se considera una dimensión Fecha que tiene solo un atributo
Año. Como solo hay un atributo, no se puede consultar la información a nivel de
trimestre, mes o día. Para maximizar la información disponible, elegir un grano
atómico detallado. En este ejemplo, se puede definir el grano al nivel Día.
Por ejemplo, asumir que un grano de un producto vendido en una tienda. No se
puede asociar a un cliente con un producto en particular que se compra, porque
solo hay una fila para un producto. Si mil clientes compran el producto mil veces, no
se puede descubrir esa información.
Página | 45
El rendimiento versus el volumen de datos (y el costo relacionado de
almacenar esos datos)
La capacidad de acceder a los datos a un nivel detallado en comparación con
el rendimiento (y el costo de almacenar y acceder a grandes volúmenes de
datos)
Seleccionar el nivel apropiado de granularidad afecta significativamente el
volumen de datos en el almacén de datos. Seleccionar el nivel apropiado de
granularidad también puede determinar la capacidad del almacén de datos
para satisfacer los requisitos de consulta.
Página | 46
Crear un informe de la fase de identificación de grano
El informe de definición de grano se crea para esta fase. El informe contiene una o
más definiciones para el grano del proceso de negocio y define el tipo de tabla de
hechos. El informe también incluye las dimensiones y medidas preliminares de alto
nivel.
Página | 47
RESULTADOS
El motivo es obvio, hoy en día, cualquier análisis que vayamos a realizar, salvo raras
excepciones, necesitará tener una perspectiva temporal disponible
Si tan común es esta dimensión y aparece en cualquier diseño, ¿por qué en muchas
ocasiones no se le da la importancia que merece y no conseguimos sacar de ella el
máximo partido?
A continuación, vamos a ir viendo los diferentes aspectos que debemos tener en
cuenta a la hora de diseñarla:
Es el momento de decidir qué columnas van a formar parte de cada una de estas
tablas, con el fin de más adelante poder responder de la forma que espera el usuario
a cualquier pregunta relativa al tiempo. No nos debe importar que haya una gran
cantidad de columnas, aunque en principio esto pueda sorprender a algún lector, he
de decir, que no es extraño encontrarnos con tablas para el tratamiento del tiempo
con varias decenas de columnas, e incluso centenares. Entre ellas podemos tener
columnas para gestionar diferentes calendarios (por campañas o temporadas,
fiscales u otros), para el uso de múltiples idiomas, para representar un mismo dato
de diferente forma de visualización, por ejemplo, relativo al trimestre podremos tener
varias columnas, con formatos de valores como ‘T1’, ‘Trim 1’, ‘2009-T1’, ‘Q1/2009’,
‘Q1’, ‘Quarter 1’, etc. (esto es extrapolable al resto de datos).
Página | 48
oportunas, y que en ellas el contenido sea tal y como al usuario le interesa
visualizarlo.
Página | 49
CONSTRAINT [PK_DimDate_DateKey] PRIMARY KEY CLUSTERED
([DateKey] ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF)
ON [PRIMARY],
CONSTRAINT [AK_DimDate_Date] UNIQUE NONCLUSTERED
([Date] ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
T-SQL 1. Estructura de la tabla de dimensión Fecha
Tabla de dimensión Hora
Página | 50
podríamos necesitar milisegundos, pero si se diese el caso también se podría con-
templar). Independientemente de la granularidad que vayamos a utilizar, podemos
dejar nuestras tablas diseñadas de forma que incluyan columnas que describan ese
máximo nivel.
Otra cosa a tener en cuenta, es que dada la poca frecuencia con la que se suele
ejecutar este proceso de carga, igual una vez al año o incluso nunca (casi nunca).
Además, cuando ejecutemos estos procesos el número de filas afectadas no será
muy grande. Esto hace que no sea muy significativo el método de carga utilizado,
Página | 51
si es con Integration Services, si es con T-SQL, si usa cursores (aunque nunca lo
recomendaría), etc.
Página | 52
Procedimiento almacenado de carga de cada fila en la tabla Fecha
create procedure InsertarFecha
@CurrentDate datetime
as
insert into Dimension.Fecha([DateKey], [Date],
[DayNumberOfWeek], [EnglishDayNameOfWeek], [DayNumberOfMonth],
[DayNumberOfYear], [WeekNumberOfYear], [EnglishMonthName],
[MonthNumberOfYear], [CalendarQuarterOfYear], [CalendarYear],
[CalendarSemesterOfYear], [CalendarYearWeek], [CalendarYearMonth],
[CalendarYearQuarter], [CalendarYearSemester])
values(
(DATEPART(year , @CurrentDate) * 10000) + (DATEPART(month ,
@CurrentDate)*100)
+ DATEPART(day , @CurrentDate)
, @CurrentDate
, DATEPART(dw , @CurrentDate)
, DATENAME(dw, @CurrentDate)
, DATEPART(day , @CurrentDate)
, DATEPART(dayofyear , @CurrentDate)
, DATEPART(wk , @CurrentDate)
, DATENAME(month, @CurrentDate)
, DATEPART(month , @CurrentDate)
, DATEPART(quarter , @CurrentDate)
, DATEPART(year , @CurrentDate)
, CASE WHEN DATEPART(quarter , @CurrentDate) < 3 THEN 1
ELSE 2
END
, CAST(DATEPART(year , @CurrentDate) as char(4)) + '-'
+ RIGHT('0'+CAST(DATEPART(wk , @CurrentDate) AS varchar(2)),2)
, CAST(DATEPART(year , @CurrentDate) as char(4)) + '-'
+ RIGHT('0'+CAST(DATEPART(month , @CurrentDate) AS varchar(2)),2)
, CAST(DATEPART(year , @CurrentDate) as char(4)) + '-'
+ CAST(DATEPART(quarter , @CurrentDate) AS varchar(1))
, CAST(DATEPART(year , @CurrentDate) as char(4)) + '-'
+ CAST(CASE WHEN DATEPART(quarter , @CurrentDate) < 3 THEN 1
ELSE 2
END AS char(2))
)
GO
T-SQL 4. Procedimiento almacenado que inserta una fila, calculando
columnas derivadas elegidas, para la fecha recibida como parámetro
Página | 53
Actualizaciones para personalizar
A continuación mostramos la actualización de algunas columnas en función del
idioma al que hacen referencia. Veremos que para algunas de ellas podemos
aprovechar la propia configuración del lenguaje establecida en SQL Server, pero
para otras debemos hacer nosotros esta tarea al no estar ese idioma disponible.
-- .. CATALAN
UPDATE Dimension.Fecha
SET CatalanDayNameOfWeek =
CASE DayNumberOfWeek
WHEN 2 THEN 'Dilluns'
WHEN 3 THEN 'Dimarts'
WHEN 4 THEN 'Dimecres'
WHEN 5 THEN 'Dijous'
WHEN 6 THEN 'Divendres'
WHEN 7 THEN 'Dissabte'
WHEN 1 THEN 'Diumenge'
END,
CatalanMonthName =
CASE MonthNumberOfYear
WHEN 1 THEN 'Gener'
WHEN 2 THEN 'Febrer'
WHEN 3 THEN 'Març'
WHEN 4 THEN 'Abril'
WHEN 5 THEN 'Maig'
WHEN 6 THEN 'Juny'
WHEN 7 THEN 'Juliol'
WHEN 8 THEN 'Agost'
WHEN 9 THEN 'Setembre'
WHEN 10 THEN 'Octubre'
WHEN 11 THEN 'Novembre'
WHEN 12 THEN 'Desembre'
END
WHERE Date >= @StarDate AND Date<= @EndDate
Página | 54
T-SQL 5. Asignación según idioma a mostrar en esa columna
Página | 55
--Se puede dejar tanto para granularidad minutos como
--segundos, o bien
--(@Hora*100) + @Minuto, para granularidad minutos,
--pero luego no habría huecos para aumentar la
--granularidad a segundos
--@Hora, para granularidad horas, pero luego no habría
-- huecos para aumentar la granularidad a minutos o segundos
--Aquí se agregarán todos los cálculos en base a esa hora
--que estimemos oportunos
--Mostramos algunos de los formatos más habituales,
--pero no su cálculo, sino que le asignamos un valor fijo
--a modo de ejemplo
set @AM = right(convert(varchar,@Time,109),2) -- AM/PM
set @NombreHora = '00' -- HH con ceros por la izquierda
set @NombreHoraAM = '12 AM' -- HH AM las 00 son las 12 AM
set @NombreMinuto = '00' -- MM con ceros por la izquierda
set @NombreSegundo = '00' -- SS con ceros por la izquierda
set @HoraMinuto = '00:00' -- HH:MM con ceros por la izquierda
set @HoraMinutoAM = '12:00 AM'
-- HH:MM AM las 00:00 son las 12:00 AM
set @HoraMinutoSegundo = convert(varchar, @Time, 108) -- HH:MM:SS
set @HoraMinutoSegundoAM = '12:00:00 AM'
-- HH:MM:SS AM las 00:00:00 son las 12:00:00 AM
--Insertar fila
insert into Dimension.Hora(IdHora, Tiempo, Hora, Minuto, Segundo,
AM, NombreHora, NombreHoraAM, NombreMinuto, NombreSegundo,
HoraMinuto, HoraMinutoAM, HoraMinutoSegundo,
HoraMinutoSegundoAM)
select @IdHora, @Time, @Hora, @Minuto, @Segundo, @AM,
@NombreHora, @NombreHoraAM, @NombreMinuto,
@NombreSegundo, @HoraMinuto, @HoraMinutoAM,
@HoraMinutoSegundo, @HoraMinutoSegundoAM
GO
T-SQL 7. Procedimiento almacenado que inserta una fila, calculando las
columnas derivadas elegidas, para la hora recibida como parámetro
Página | 56
Por qué separar en dos tablas fecha y hora
Como se ha podido comprobar, hemos hecho un tratamiento del tiempo basado en
dos tablas, por un lado el tratamiento de Fechas y por otro lado el tratamiento de
Horas. Si no es su caso y necesita tener una sola tabla, con la granularidad que
estime oportuna, bien puede adaptar el material anterior y cambiar el diseño para
que el nivel de granularidad sea mayor y que todo gire en torno a una sola tabla, o
bien, puede mantenerlo, y mediante una CROSS JOIN puede obtener el resultado
de una sola tabla que incluya el producto cartesiano de ambas tablas.
El único tema adicional que se considera importante, es que en los procesos ETL
de carga de hechos, habrá que tener en cuenta el tratamiento a realizar cuando
entre un hecho con una fecha que no se encuentre almacenada en la Dimensión
Tiempo. Podemos incluso hacer que el proceso cree una fila para esa fecha en la
dimensión tiempo. Lo más habitual es que ese hecho arrastre algún error en el
sistema transaccional, para lo cual debemos de alguna forma reflejar que se ha
producido esa situación, bien grabando en alguna tabla de auditoría, bien llevando
esas filas a otra tabla para revisión, o como estimemos oportuno, pero siempre
dejando reflejada esa posible anomalía.
Es habitual que una empresa tenga diferentes sedes, y que estas estén en lugares
geográficos distintos, en diversas ciudades a lo largo de la geografía. En ese caso,
aunque una fecha es la misma en cualquier lugar del planeta, nos solemos encontrar
Página | 57
con pequeñas variantes, como es el caso del tratamiento de los festivos, de periodos
de cierre de producción en cada sede, o cualquier otro dato a tratar que pueda variar
de un lugar a otro. Para estos casos, hemos visto una alternativa simple, que es
tener una columna de festivos para cada lugar. Esta solución es rápida y válida en
algunos casos, pero hay otros muchos que necesitan de una mayor flexibilidad, y
que se puedan incorporar de forma automática nuevas sedes y por tanto nuevos
calendarios, y no querremos estar añadiendo nuevas columnas a nuestra tabla y
modificando nuestro proceso de ETL para que las alimente. En ese caso debemos
cambiar la granularidad de nuestra tabla para tener una fecha por cada calendario
que tengamos en nuestro sistema, así para un mismo día habrá tantas filas como
calendarios tengamos definidos.
Página | 58
CONCLUSION
Página | 59
BIBLIOGRAFIA / LINKOGRAFIA
https://www.safaribooksonline.com/library/view/building-the-
data/9780764599446/ch04.html
https://www.quora.com/What-is-granularity-in-data-warehouse
http://smartbasegroup.com/tips-de-diseno-de-dwh-la-granularidad-parte-1/
https://www.ibm.com/support/knowledgecenter/en/SS9UM9_8.5.0/com.ibm.
datatools.dimensional.ui.doc/topics/c_dm_design_cycle_2_idgrain.html
https://www.1keydata.com/datawarehousing/fact-table-granularity.html
http://www.business.aau.dk/oekostyr/file/What_is_a_Data_Warehouse.pdf
https://www.adictosaltrabajo.com/tutoriales/datawarehouse-4/
Building the Data Warehouse by W.H Inmon
Ralph Kimball, 1996. The Data Warehouse Toolkit. Wiley.
Ralph Kimball, 1998. The Data Warehous Lifecycle Toolkit. Wiley.
Barry Devlin, 1997. Data Warehouse from architecture to
implementation.
Página | 60