No hemos encontrado resultados relativos a la búsqueda realizada.
Puedes volver a intentarlo de nuevo realizando una nueva búsqueda.
No hemos encontrado resultados relativos a la búsqueda realizada.
Puedes volver a intentarlo de nuevo realizado una nueva búsqueda.
Por Lorena Ruiz González
01 de Dic de 2020 · Informática y TICS
El presente proyecto trata sobre la elaboración e implementación de un datawarehouse en una cadena de tintorerías y lavanderías.
Una carencia de esta empresa es la explotación de los datos, actualmente los establecimientos tienen una aplicación, con una base de datos local que no tiene ningún tipo de relación con la de los demás establecimientos. Es muy laboriosa la obtención de información y la que se obtiene es sólo a nivel de un establecimiento. No cuenta con ningún datawarehouse centralizado dónde estudiar toda la información en conjunto y tampoco con sistemas de minería de datos, Big Data, etc.
El proyecto se centra en el diseño conceptual, lógico y físico del datawarehouse y en la implementación de este.
¿Te resulta interesante?
¡Guarda este contenido completo en PDF!
Descarga gratis este contenido y consúltalo cuando lo necesites
El desarrollo del proyecto se ha orientado hacia la generación de un datawarehouse para el análisis de los actuales sistemas de información y la posterior implantación de una solución de inteligencia de negocio para aportar mayor conocimiento del negocio, control sobre los procesos y ampliar la capacidad y calidad de la toma de decisiones de los directivos.
Actualmente la empresa carece de un sistema de Business Intelligence, se hace uso de ficheros Excel dispersos en discos con datos extraídos de los sistemas transaccionales y se confeccionan periódicamente informes de facturación y servicios.
Desde sus inicios la empresa desarrolló su propio software, consiste en un TPV localizado en cada establecimiento y un sistema con el que copia los datos locales de las tiendas en un servidor central.
La explotación de estas bases de datos se hace mediante una serie de procedimientos almacenados generados por un experto en bases de datos.
Actualmente no existe ningún Datawarehouse, se realizan reuniones con los departamentos para conocer que esperan obtener del sistema. De estas reuniones obtenemos el diseño conceptual.
El desencadenante del proceso es la petición, se produce cuando un cliente lleva sus prendas al establecimiento para ser procesadas. A partir de esta premisa surgen las siguientes entidades:
Sobre estas entidades se generan:
La diferencia entre la producción y la venta está en ciertos productos promocionales.
El modelo lógico lo vamos a desarrollar entidad a entidad y desarrollándola.
Establecimiento: lugar dónde se produce la petición:
Usuario: realiza dos acciones recepción y entrega.
Cliente: propietario del servicio.
Servicio: el ítem que se genera la transacción
Petición:
El servicio que se presta al cliente en una tienda por el usuario. El cliente puede llevar varias prendas, que pueden entregarse en fechas diferentes, por usuarios diferentes y tener asociados distintos comentarios, colores, marcas.
La petición se divide en dos, tenemos la petición, todos los campos son comunes a todos los servicios y el detalle de la petición, los campos son diferentes por cada servicio.
Aquí nos encontramos con otras cinco entidades:
Promoción / descuento
Promociones que se pueden aplicar a un servicio:
Ingreso: Cobros generados por la petición, se puede generar en la recepción o entrega o a posterior y puede corresponder a parte o al total de la petición. No tiene por qué corresponder con el detalle de la petición.
Factura:
Anulaciones: puede corresponder con el total de una petición o sólo con parte de su detalle, se decide gestionarla de forma separada ya que la relación es mínima.
Créditos: Existen varios medios promocionales que generan crédito, nos interesa estudiarlos para ver la rentabilidad.
Una vez vistas todas las entidades la relación entre ellas serian la petición y el detalle de la petición.
El modelo lógico: se omiten los atributos, se marcan en azul las entidades que serán las dimensiones y en verde los hechos.
El modelo físico, usaremos el gestor de base de datos MySQL, esta plataforma se está usando para otros servicios y no habría que invertir en más recursos.
Establecimiento
Clientes
Servicios
El modelo físico para las demás entidades sería:
Creamos varias tablas relativas a las fechas para estudiar la información en base a periodos de tiempo.
Cambiamos los campos que actualmente son DateTime a int y los relacionamos con la tabla fecha.
Una vez definido el modelo físico se genera la base de datos creada para este fin.
En cada establecimiento reside una base de datos local en SQL Server 2008 express R2, estas son independientes, por lo que hay información repetida en varias de estas bases de datos.
Dividimos el proceso ETL en tres fases:
Utilizaremos el programa pentaho data integration para realizar todo el proceso. Creamos el JOB principal “Proceso ETL”, crearemos transformaciones para cada uno de los procesos, esto facilitará el diseño y posibles problemas que puedan surgir.
Comenzamos con la extracción de los datos desde las bases de datos de los establecimientos a la base de datos tpv-completa.
Estudiando las bases de datos vemos que existen diferentes esquemas. La diferencia es incremental.
Comenzamos generando una base de datos, tpvCompleto, con la estructura más actual añadiendo el código del establecimiento y un campo que indique si ha sido procesado. También generamos una tabla para indicar la última carga de cada tienda, nos servirá para cargar sólo los datos faltantes o que hayan sido modificados.
Existe una base de datos llamada Central con la tabla tiendas, dónde se almacena la fecha de ultimo envío de datos desde el establecimiento a la central y la versión del esquema de la base de datos, la vamos a utilizar para cargar tiendas de las que faltan datos.
La primera transformación es la extracción de datos desde las bases de datos de los establecimientos hacia la base de datos “tpvcompleta”
Para cada establecimiento, la transformación DivisionEsquemas, obtiene la fecha hasta la que hay datos en la base de datos tpv-completa, si no hay datos de esa tienda por defecto se aplica la fecha ‘01/01/1990’.
En base a la versión que tiene del sistema tpv va llamando a diferentes transformaciones para generar la carga de las tablas. Para finalizar actualiza la fecha desde la que hay datos en la tabla tiendas de la base de datos tpv-completo.
Las transformaciones: por cada tabla se obtienen los datos a partir de la fecha anterior y se usa la opción de actualizar o insertar.
Una vez hemos finalizado la parte de extracción pasamos a la fase de transformación.
Vamos a generar dos procedimientos en la base de datos datawarehouse para generar los datos de las tablas relacionas con las fechas.
El primero es RellenaAuxFecha que rellena las tablas dm_Mes, dm_Trimestre, dm_Semestre y dm_diaSemana con los datos correspondientes. Este procedimiento sólo es necesario ejecutarlo una vez.
El segundo es GeneraFechas que rellena la tabla dm_fechas, con los valores comprendidos entre dos fechas que se le pasan cómo parámetro. De momento vamos a ejecutarlo desde 01/01/1990 hasta el 31/12/2020.
Comenzamos con la entidad establecimiento, ya que todo lo referente a esta entidad se encuentra en la base de datos Merchantdatabase.
Generamos una transformación “TR-Merchantdatabase” que añadimos a nuestro job
principal:
La primera parte de la transformación obtiene los datos de las tablas que no necesitan ningún procesamiento.
Después obtenemos todos los establecimientos, para cada uno de ellos:
1 – Se obtienen los códigos postales, ciudades y provincias de España desde la web https://postal.cat/ y se han precargado en la base de datos datawarehouse.
Los datos de las direcciones son escritas por el usuario, por lo que pueden llevar faltas ortográficas o ser incorrectos. Se ha creado una tabla auxiliar, dónde se hace una correspondencia entre el dato incorrecto y el correcto
2- Se ha creado otra función (obtenerFecha) en la base de datos que en base a una fecha devuelve el id de la tabla dm_fechas.
3 – Para cada una de las líneas de negocio disponibles se comprueba si el establecimiento la tiene y se inserta o borra de la tabla establecimientoLNegocio.
4 - Se obtiene la relación entre los establecimientos y las sociedades y se actualiza la tabla sociedadEstablecimiento
Desde la base de datos generada en el paso de extracción cargamos entidad a entidad. Creamos una transformación (TR-BasesDatosEstablecimientos) que ira llamando a diferentes transformaciones para obtener los datos de cada entidad
Existe una base de datos ConfiguracionMaestra, aquí está la información base de algunas de las entidades.
Algunas de estas entidades se pueden cargar directamente desde esta base de datos ya que todos los datos que contiene son comunes.
Añadimos esta transformación a nuestra transformación:
Las bases de datos son independientes por lo que existen datos repetidos en todas ellas, en todas las entidades vamos a ir creando tablas auxiliares para almacenar el id en la base de datos Datawarehouse y el id en la tabla de la base de datos. De esta forma vamos a ir limpiando los datos que vamos a traspasar al Datawarehouse.
El proceso es el siguiente:
Añadimos esta transformación a la principal
Un cliente puede existir en varias tiendas, también hay que tener en cuenta que los usuarios pueden escribir los nombres de diferentes formas, con abreviaturas, nombres compuestos, etc. Vamos a tomar el NIF como el campo que va a determinar si el cliente existe o es nuevo. Decidimos hacer una función en la base de datos de Datawarehouse que compruebe si existe un cliente con ese NIF.
Unimos la nueva trasformación a la principal
Entidad Servicios
La tabla usuarios tendrá una auxiliar pero que se rellenará manualmente ya que no hay forma de igualar el nombre entre tiendas.
Las promociones que se repiten entre tiendas se configuran desde la central y tienen el mismo código que será el que se use para su carga.
Añadimos las dos transformaciones a la principal
Para la entidad marcas vamos a crear un listado base accediendo a la web de El Corte Inglés y copiando las marcas con las que ellos trabajan. Esta entidad no tiene una tabla con los datos en TPVcompleto, es un campo texto que lo rellena el usuario en el alta de un servicio, por lo que la cargaremos a la vez que el detalle de la petición.
Creamos una tabla auxiliar para hacer corresponder las marcas precargadas con las escritas por el usuario.
Con los colores hacemos lo mismo que con las marcas, descargamos un listado de colores desde internet.
Creamos una tabla auxiliar para hacer corresponder los colores precargados con los escritos por el usuario.
Para las entidades petición y detallePeticion vamos a tomar petición a petición e ir calculando el detalle y las demás entidades relacionadas.
Lo unimos al proceso principal
Tenemos constancia de que los usuarios son inexpertos en estas materias por lo que vamos a comenzar generando varios cubos sencillos, que se irán ampliando según el usuario lo requiera.
Para diseñar los cubos vamos a usar la aplicación schema-workbench de pentaho.
Los tres cubos a generar son:
Para comenzar la implantación necesitaremos de un servidor con capacidad suficiente para almacenar y gestionar tanta información, se necesitan dos bases de datos:
100Mb * 10 años * 400 establecimientos = 400.000 Mb = 390 Gb
300Mb * 10 años = 3000 Mb = 3 Gb
Se decide usar dos servidores uno en el que albergar la base de datos de tpvCompleto y otro en la que estará la instalación de pentaho con base de datos Datawarehouse, Mondrian con los cubos y todos los informes que se generarán en base a toda esta información.
Se decide realizar una serie de reuniones para explicar que es un datawarehouse y cómo se ha gestionado. Estas reuniones también se utilizarán para que los usuarios tomen contacto y sean capaces de generar los informes y cuadros de mando que cada uno de ellos requiere.
Actualmente sólo se cuenta con uno de los servidores el que alberga tpvCompleto. Por lo que los pasos para iniciar la implantación en este servidor son:
Una vez que el primer servidor esté en marcha y funcionando correctamente, pasaremos al segundo.
El segundo servidor los pasos serían los siguientes:
Tal y como se ha comentado anteriormente los usuarios son inexpertos en este tipo de tecnologías, por lo que se ha comenzado con algo sencillo para que puedan ir familiarizándose.
El éxito de este proyecto radica sobre todo en ser capaces de que los usuarios vean el valor que aporta una solución de Business Intelligence, para posteriormente aplicar sistemas de Big Data.
Se plantea la necesidad de implantar unos cursos básicos para comprender que es esta herramienta, para que sirve y los beneficios que tiene. Se van a llevar a cabo en tres grupos uno para la dirección, segundo para los mandos intermedios y finalmente para el personal más operativo
Una vez superada y puesta en marcha esta primera fase hay que ir incluyendo los datos de los demás sistemas que usa la empresa en el datawarehouse. De forma que consigamos un sistema dónde poder ver la información completa de toda la empresa, además de generar los cuadros de mando requeridos por cada nivel jerárquico de esta.
Desde mi posición en esta empresa este trabajo de fin de máster me ha supuesto un gran reto, ya no sólo por la implantación de toda la materia que he aprendido a lo largo del máster. Mi mayor reto ha sido y sigue siendo el usuario final, como hacerle entender desde su punto de vista que supone un sistema de Business Intelligence y Big Data.
Partiendo de la base que actualmente no hay ningún sistema de estas características en la empresa, es complicado hacer ver al usuario final que todo el tiempo invertido va a repercutir en una aplicación que les va a dar muchísima información de forma fácil y dinámica. Actualmente tienen parte de esta información, pero no es al momento y requieren que un experto en bases de datos genere los informes requeridos y se lo envíe.
Otra de las reticencias con los usuarios es el tiempo que se tarda en implementar hasta que ellos pueden ver el resultado. Cuando se realiza un proyecto de este tipo el mayor tiempo se invierte en el diseño y el proceso ETL, en esas fases el usuario final no es capaz de ver la envergadura ni el resultado que va a obtener. Hasta la última fase que es cuando se publican los cubos y ya ellos pueden empezar a trabajar con la información el usuario no puede ver el beneficio que le supone este tipo de sistema.
Referencias
Bouman, Roland y van Dongen, Jos (2009). Pentaho solutions: Business intelligence and Data Warehousing with Pentaho and MySQL. Wiley
Urrutia Sepulveda. Angélica (2013). Implementación de Business Intelligence en plataforma Free de Pentaho: Aplicaciones en Posgree, Weka y Kettle. EAE
Hitachi Vantara Corporation. Pentaho community fórums (https://forums.pentaho.com/)
Javier Casares (1 enero 2019). Base de datos de Códigos Postales. https://postal.cat/
El Corte Inglés. Marcas de Moda. https://www.elcorteingles.es/moda/marcas/
ADRIÀ NOLLA DEL VALLE, (2023)
La Cartera Adaptada: adaptando la cartera permanente a los ciclos económicos Leer InvestigaciónAlberto Conchillo Guantes, (2023)
Impacto del impuesto de sociedades en el comportamiento de las empresas Leer InvestigaciónFrancisco Javier Roldán de la Rosa, (2023)
Historia y evolución de la Farmacovigilancia Leer Investigación