Titulo
Titulo
INFORMÁTICA DE GESTIÓN Y
SISTEMAS DE INFORMACIÓN
Desarrollo de un sistema
de BI con Pentaho
DOCUMENTO 1- MEMORIA
Curso 2020-2021
1. Resumen
Durante este proyecto se ha implementado un sistema de Business Intelligen-
ce haciendo uso de la plataforma Pentaho, con el objetivo de explotar los datos
obtenidos principalmente de un sistema de gestión de almacenes y extender las
funcionalidades ofrecidas en este.
1
Índice
1. Resumen 1
2. Introducción 9
2.1. Descripción del Proyecto . . . . . . . . . . . . . . . . . . . . . . . 9
2.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3. Planteamiento inicial 11
3.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . 11
3.1.2. Objetivos personales . . . . . . . . . . . . . . . . . . . . . 11
3.2. Marco del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1. Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.2. Ciclo de Vida . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5. Planificación Temporal . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.1. EDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.2. Listado de Tareas . . . . . . . . . . . . . . . . . . . . . . 16
3.5.3. Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6. Gestión de Riesgos . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7. Planificación Económica . . . . . . . . . . . . . . . . . . . . . . . 27
3.7.1. Gastos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7.2. Beneficios . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4. Antecedentes 29
4.1. Situación actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2. Definición de Business Intelligence . . . . . . . . . . . . . . . . . 29
4.3. Componentes de un Business Intelligence . . . . . . . . . . . . . 30
4.3.1. Datawarehouse . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3.2. Cubos OLAP . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3.3. Cuadros de mando . . . . . . . . . . . . . . . . . . . . . . 32
4.4. Análisis de Herramientas . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.1. Pentaho CE . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5. Captura de requisitos 35
5.1. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2. Requisitos no funcionales . . . . . . . . . . . . . . . . . . . . . . 35
5.3. Jerarquı́a de actores . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4. Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6. Análisis y diseño 39
6.1. Análisis de la base de datos origen . . . . . . . . . . . . . . . . . 39
6.2. Diseño del Datawarehouse . . . . . . . . . . . . . . . . . . . . . . 42
6.3. Diseño de los cubos OLAP . . . . . . . . . . . . . . . . . . . . . . 50
6.4. Diseño de los informes predefinidos . . . . . . . . . . . . . . . . . 58
2
7. Desarrollo 62
7.1. Creación del esquema de base de datos . . . . . . . . . . . . . . . 62
7.2. Implementación del proceso ETL . . . . . . . . . . . . . . . . . . 64
7.3. Implementación de los cubos OLAP . . . . . . . . . . . . . . . . 80
7.4. Implementación de informes predefinidos . . . . . . . . . . . . . . 84
7.5. Despliegue de la aplicación web . . . . . . . . . . . . . . . . . . . 87
7.5.1. Conexión de la aplicación con el Datawarehouse . . . . . 88
7.5.2. Despliegue de los cubos OLAP . . . . . . . . . . . . . . . 89
7.5.3. Despliegue de la herramienta para consultas ad-hoc . . . 91
7.5.4. Creación de metadatos para consultas ad-hoc . . . . . . . 96
7.5.5. Despliegue de informe predefinidos . . . . . . . . . . . . . 100
7.5.6. Instalación de la aplicación BI . . . . . . . . . . . . . . . 101
8. Evaluación 104
8.1. Evaluación del proceso ETL . . . . . . . . . . . . . . . . . . . . . 104
8.2. Evaluación medidas cubos OLAP . . . . . . . . . . . . . . . . . . 106
8.3. Evaluación consultas ad-hoc . . . . . . . . . . . . . . . . . . . . . 113
3
Índice de figuras
1. Logotipo InLOG Consultorı́a y Soluciones . . . . . . . . . . . . . 11
2. Ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3. EDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4. Diagrama Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5. Proceso ETL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6. Estructura Cubo OLAP . . . . . . . . . . . . . . . . . . . . . . . 31
7. Diagrama Arquitectura Pentaho . . . . . . . . . . . . . . . . . . 34
8. Jerarquia de actores . . . . . . . . . . . . . . . . . . . . . . . . . 36
9. Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
10. Esquema de estrella . . . . . . . . . . . . . . . . . . . . . . . . . 42
11. Esquema copo de nieve . . . . . . . . . . . . . . . . . . . . . . . . 42
12. Esquema en copo de nieve de la tabla Movimientos . . . . . . . . 43
13. Esquema en copo de nieve de la tabla Paletas . . . . . . . . . . . 44
14. Esquema en copo de nieve de la tabla Cabecera de Pedido de
Compra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
15. Esquema en copo de nieve de la tabla Lineas de Pedidos de Compra 44
16. Esquema en copo de nieve de la tabla Cabecera de Pedido de Venta 45
17. Esquema en copo de nieve de la tabla Lineas de Pedidos de Venta 45
18. Esquema en copo de nieve de la tabla Cabecera Devolución Cliente 46
19. Esquema en copo de nieve de la tabla Lineas Devolución Cliente 46
20. Esquema en copo de nieve de la tabla Cabecera Devolución Pro-
veedor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
21. Esquema en copo de nieve de la tabla Lineas Devolución Proveedor 47
22. Esquema en copo de nieve de la tabla Ordenes de Palet Completo 48
23. Esquema en copo de nieve de la tabla Ordenes de Picking . . . . 48
24. Esquema en copo de nieve de la tabla Lineas de Picking . . . . . 49
25. Esquema en copo de nieve de la tabla Ubicación de Picking . . . 49
26. Esquema en copo de nieve de la tabla Ubicación de Almacenaje . 50
27. Esquema tabla Festivos y pseudocódigo procedimiento almacenado 52
28. Diseño informe paletas caducadas . . . . . . . . . . . . . . . . . . 58
29. Diseño informe pedidos de compra . . . . . . . . . . . . . . . . . 59
30. Diseño informe pedidos de venta . . . . . . . . . . . . . . . . . . 60
31. Diseño informe productividad operarios . . . . . . . . . . . . . . 61
32. Vista esquema DWH desde PL/SQL Developer . . . . . . . . . . 63
33. Transformación de la tabla de dimensiones Artı́culos . . . . . . . 64
34. Transformación de las tablas de dimensiones Área descarga y
Pasillos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
35. Transformación de la tabla de hechos Movimientos . . . . . . . . 65
36. Transformación de la tabla de hechos Paletas . . . . . . . . . . . 66
37. Transformación de las tablas de hechos Pedidos de Compra . . . 67
38. Transformación de las tablas de hechos Pedidos de Venta,Ordenes
de Palet Completo y Picking . . . . . . . . . . . . . . . . . . . . 69
39. Transformación de las tablas de hechos Devoluciones Cliente . . . 71
40. Transformación de las tablas de hechos Devoluciones Proveedor . 72
41. Transformación de las tablas de hechos Ubicación Picking . . . . 73
42. Transformación de las tablas de hechos Ubicación de Almacenaje 73
43. Transformación de las tablas de dimensiones Almacenes . . . . . 74
4
44. Transformación de las tablas de dimensiones Clientes y Provee-
dores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
45. Transformación de la tabla de dimensiones Operarios . . . . . . . 75
46. Transformación de las tablas de dimensiones propietarios . . . . 76
47. Transformación de las tablas de dimensiones tipos movimiento y
pedido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
48. Transformación de las tablas de dimensiones tipos pedido provee-
dor y paleta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
49. Job para la carga de datos . . . . . . . . . . . . . . . . . . . . . . 77
50. Ejecución del job principal mediante Kitchen . . . . . . . . . . . 78
51. Script ejecución proceso ETL . . . . . . . . . . . . . . . . . . . . 79
52. Fichero Crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
53. Consulta Vista Tiempo . . . . . . . . . . . . . . . . . . . . . . . 80
54. Operaciones sobre un schema . . . . . . . . . . . . . . . . . . . . 81
55. Operaciones sobre jerarquı́a de una dimensión . . . . . . . . . . . 81
56. Operaciones sobre un cubo . . . . . . . . . . . . . . . . . . . . . 82
57. Atributos de una dimensión . . . . . . . . . . . . . . . . . . . . . 82
58. Schema con los cubos y dimensiones compartidas . . . . . . . . . 83
59. Añadir fuente de datos en Report Designer . . . . . . . . . . . . 84
60. Creación de sentencia del informe . . . . . . . . . . . . . . . . . . 84
61. Workspace diseño de informe . . . . . . . . . . . . . . . . . . . . 85
62. Panel de datos en Report Designer . . . . . . . . . . . . . . . . . 86
63. Organización del proyecto en Eclipse . . . . . . . . . . . . . . . . 87
64. Pantalla administración de fuentes de datos . . . . . . . . . . . . 88
65. Asistente creación de conexión a base de datos . . . . . . . . . . 88
66. Asistente publicación cubos OLAP . . . . . . . . . . . . . . . . . 89
67. Fuente de datos cubos OLAP . . . . . . . . . . . . . . . . . . . . 89
68. Clonación del proyecto Pivot4J . . . . . . . . . . . . . . . . . . . 90
69. Vista Menú Crear nuevo . . . . . . . . . . . . . . . . . . . . . . . 90
70. Consulta contra cubo Cabecera Pedido Compra . . . . . . . . . . 91
71. Herramienta para el desarrollo de Plugins . . . . . . . . . . . . . 92
72. Componentes de un cuadro de mando . . . . . . . . . . . . . . . 92
73. Código HTML del popup para aplicar filtros . . . . . . . . . . . . 93
74. Implementación de la función [Link] . . . . . . . . . . . . . . 94
75. Implementación de la función [Link] . . . . . . . . . . 94
76. Implementación de la función [Link] . . . . . . . . . . 95
77. Popup selector de filtros . . . . . . . . . . . . . . . . . . . . . . . 95
78. Opciones sobre conexión en la herramienta PME . . . . . . . . . 96
79. Busqueda de tablas a importar en la herramienta PME . . . . . 97
80. Modificación de tabla ARTICULOS en la herramienta PME . . . 97
81. Asistente para la definición de relaciones entre tablas . . . . . . . 98
82. Asistente publicación dominio de metadatos . . . . . . . . . . . . 99
83. Fuente de datos dominio de metadatos . . . . . . . . . . . . . . . 99
84. Ejemplo de consulta sobre pedidos de compra . . . . . . . . . . . 99
85. Asistente publicación de informe . . . . . . . . . . . . . . . . . . 100
86. Selección ruta para publicación de informe . . . . . . . . . . . . . 100
87. Búsqueda informes en la aplicación web . . . . . . . . . . . . . . 101
88. Ejemplo informe paletas caducadas . . . . . . . . . . . . . . . . . 101
89. Subida de la aplicación web al servidor . . . . . . . . . . . . . . . 102
90. Comprobación subida de la aplicación web al servidor . . . . . . 102
5
91. Configuración puerto de la aplicación web Pentaho . . . . . . . . 103
92. Pantalla login aplicación web Pentaho . . . . . . . . . . . . . . . 103
93. Resultado pruebas unitarias primera carga de datos . . . . . . . 105
94. Resultado pruebas unitarias carga de datos incremental . . . . . 105
95. Resultado medidas cubo movimientos mediante consulta SQL . . 106
96. Resultado medidas cubo movimientos mediante consulta MDX . 106
97. Resultado consulta ad-hoc pedidos de compra . . . . . . . . . . 113
98. Resultado consulta SQL pedidos de compra . . . . . . . . . . . . 114
99. Resultado consulta ad-hoc pedidos de venta . . . . . . . . . . . 114
100. Resultado consulta SQL pedidos de venta . . . . . . . . . . . . . 115
101. Resultado consulta ad-hoc maestros . . . . . . . . . . . . . . . . 115
102. Resultado consulta SQL maestros . . . . . . . . . . . . . . . . . 115
103. Resultado consulta ad-hoc control . . . . . . . . . . . . . . . . . 116
104. Resultado consulta SQL control . . . . . . . . . . . . . . . . . . 116
105. Gráfica comparación horas estimadas y reales . . . . . . . . . . . 117
106. Diagrama metadato de compras . . . . . . . . . . . . . . . . . . . 143
107. Diagrama metadato de ventas . . . . . . . . . . . . . . . . . . . . 144
108. Diagrama metadato de maestros . . . . . . . . . . . . . . . . . . 146
109. Diagrama metadato de control . . . . . . . . . . . . . . . . . . . 147
110. Diagrama de clases JUnits proceso ETL . . . . . . . . . . . . . . 149
111. Estructura proyecto JUnits del proceso ETL . . . . . . . . . . . . 152
112. Pantalla de login de la aplicación web . . . . . . . . . . . . . . . 153
113. Mensaje de carga de la consola de usuario . . . . . . . . . . . . . 153
114. Interfaz consola de usuario . . . . . . . . . . . . . . . . . . . . . . 154
115. Pestaña de navegación entre perspectivas . . . . . . . . . . . . . 154
116. Desplegable Crear Nuevo . . . . . . . . . . . . . . . . . . . . . . 155
117. Interfaz menú ficheros con acciones sobre carpeta . . . . . . . . . 156
118. Interfaz menú ficheros con acciones sobre fichero . . . . . . . . . 157
119. Interfaz menú programaciones . . . . . . . . . . . . . . . . . . . . 158
120. Popup asistente configuración de tiempo de interrupción . . . . . 158
121. Interfaz opciones menú administración . . . . . . . . . . . . . . . 159
122. Interfaz gestión usuarios y roles del menú administración . . . . 159
123. Interfaz gestión servidor correo del menú administración . . . . . 160
124. Interfaz configuración en menú administración . . . . . . . . . . 160
125. Interfaz pantalla consultas ad-hoc . . . . . . . . . . . . . . . . . . 161
126. Diseño de consultas ad-hoc . . . . . . . . . . . . . . . . . . . . . 162
127. Resultado de consulta ad-hoc . . . . . . . . . . . . . . . . . . . . 162
128. Popup selección de filtros sobre un campo . . . . . . . . . . . . . 163
129. Filtros aplicados en una consulta ad-hoc . . . . . . . . . . . . . . 163
130. Pantalla selección de cubo OLAP . . . . . . . . . . . . . . . . . . 164
131. Pantalla visor OLAP . . . . . . . . . . . . . . . . . . . . . . . . . 164
132. Ejemplo de consulta con el visor OLAP . . . . . . . . . . . . . . 165
133. Configuración parámetros de informe predefinido . . . . . . . . . 166
134. Valores tipo de salida de informe predefinido . . . . . . . . . . . 166
135. Ejemplo de informe predefinido . . . . . . . . . . . . . . . . . . . 167
6
Índice de tablas
1. Plantilla Definición Paquetes de Trabajo . . . . . . . . . . . . . . 16
2. Tarea Definición de Objetivos y Alcance del proyecto . . . . . . . 16
3. Tarea Planificación Temporal del proyecto . . . . . . . . . . . . . 16
4. Tarea Gestión de Riesgos . . . . . . . . . . . . . . . . . . . . . . 17
5. Tarea Planificación Económica . . . . . . . . . . . . . . . . . . . 17
6. Tarea Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7. Tarea Aprender conceptos básicos de Business Intelligence . . . . 18
8. Tarea Aprender funcionamiento de la plataforma Pentaho . . . . 18
9. Tarea Aprender funcionamiento de la plataforma Pentaho . . . . 18
10. Tarea Identificación de funcionalidades . . . . . . . . . . . . . . . 19
11. Tarea Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . 19
12. Tarea Diseño del Datawarehouse . . . . . . . . . . . . . . . . . . 19
13. Tarea Diseño de los cubos OLAP . . . . . . . . . . . . . . . . . . 20
14. Tarea Diseño de informes . . . . . . . . . . . . . . . . . . . . . . 20
15. Tarea Implementación e integración del Datawarehouse . . . . . 20
16. Tarea Implementación de cubos OLAP y visor . . . . . . . . . . 21
17. Implementación e integración del Datawarehouse . . . . . . . . . 21
18. Tarea Despliegue del servidor web . . . . . . . . . . . . . . . . . 21
19. Tarea Despliegue del servidor web . . . . . . . . . . . . . . . . . 22
20. Tarea Realización de la memoria . . . . . . . . . . . . . . . . . . 22
21. Tarea Pruebas de implementación . . . . . . . . . . . . . . . . . . 22
22. Riesgo Perdida del proyecto . . . . . . . . . . . . . . . . . . . . . 24
23. Retraso en el desarrollo del proyecto . . . . . . . . . . . . . . . . 24
24. Riesgo Desarrollo diferente al pedido . . . . . . . . . . . . . . . . 24
25. Riesgo Mala planificación temporal . . . . . . . . . . . . . . . . . 25
26. Riesgo Ordenador defectuoso . . . . . . . . . . . . . . . . . . . . 25
27. Riesgo Problemas en la implementación . . . . . . . . . . . . . . 25
28. Diseño inadecuado . . . . . . . . . . . . . . . . . . . . . . . . . . 26
29. Problemas en reunión con el cliente . . . . . . . . . . . . . . . . . 26
30. Gastos en personal . . . . . . . . . . . . . . . . . . . . . . . . . . 27
31. Gastos en personal . . . . . . . . . . . . . . . . . . . . . . . . . . 27
32. Gastos software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
33. Gastos indirectos . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
34. Gastos totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
35. Comparativa entre Datawarehouse y base de datos operacional
[6] [7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
36. Comparativa entre herramientas de BI [13] [14] [15] [16] [17] [18] 33
37. Estructura Vista Dimensión Tiempo . . . . . . . . . . . . . . . . 52
38. Resultado pruebas medidas del cubo movimientos . . . . . . . . . 107
39. Resultado pruebas medidas del cubo paletas . . . . . . . . . . . . 107
40. Resultado pruebas medidas del cubo cabecera pedido de compra 108
41. Resultado pruebas medidas del cubo lineas pedido de compra . . 108
42. Resultado pruebas medidas del cubo cabecera pedido de venta . 109
43. Resultado pruebas medidas del cubo lı́neas pedido de venta . . . 109
44. Resultado pruebas medidas del cubo cabecera devolución clien-
te/proveedor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
45. Resultado pruebas medidas del cubo lı́neas devolución cliente . . 110
7
46. Resultado pruebas medidas del cubo lı́neas devolución proveedor 111
47. Resultado pruebas medidas del cubo ordenes de paleta completa 111
48. Resultado pruebas medidas del cubo ordenes de picking . . . . . 112
49. Resultado pruebas medidas del cubo lı́neas de picking . . . . . . 112
50. Resultado pruebas medidas cubos ubicación de picking y alma-
cenaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
51. Comparación horas estimadas y reales . . . . . . . . . . . . . . . 118
52. Caso de Uso: Iniciar Sesión . . . . . . . . . . . . . . . . . . . . . 124
53. Caso de Uso: Programar Tareas . . . . . . . . . . . . . . . . . . . 126
54. Caso de Uso: Realizar consulta . . . . . . . . . . . . . . . . . . . 127
55. Caso de Uso: Crear cuadro de mando . . . . . . . . . . . . . . . . 128
56. Caso de Uso: Visualizar cubos OLAP . . . . . . . . . . . . . . . . 129
57. Caso de Uso: Abrir cuadros de mando . . . . . . . . . . . . . . . 130
58. Caso de Uso: Abrir informes . . . . . . . . . . . . . . . . . . . . . 132
59. Caso de Uso: Administrar fuentes de datos . . . . . . . . . . . . 133
60. Caso de Uso: Administrar usuarios . . . . . . . . . . . . . . . . . 134
61. Caso de Uso: Administrar Roles de usuario . . . . . . . . . . . . 136
62. Caso de Uso: Crear cubo OLAP . . . . . . . . . . . . . . . . . . . 137
63. Caso de Uso: Desplegar cubo OLAP . . . . . . . . . . . . . . . . 138
64. Caso de Uso: Definir transformaciones . . . . . . . . . . . . . . . 139
65. Caso de Uso: Definir jobs . . . . . . . . . . . . . . . . . . . . . . 140
66. Caso de Uso: Diseñar informe . . . . . . . . . . . . . . . . . . . . 141
67. Caso de Uso: Publicar informe . . . . . . . . . . . . . . . . . . . 142
68. Relaciones metadato de compras . . . . . . . . . . . . . . . . . . 144
69. Relaciones metadato de ventas . . . . . . . . . . . . . . . . . . . 145
70. Relaciones metadato de maestros . . . . . . . . . . . . . . . . . . 146
71. Relaciones metadato de control . . . . . . . . . . . . . . . . . . . 148
8
2. Introducción
2.1. Descripción del Proyecto
El proyecto que se desarrolla consiste en crear, desarrollar y desplegar una
aplicación de Business Intelligence (BI) para la empresa InLOG Consultorı́a y
Soluciones, con el objetivo de poder aportar a las empresas clientes de InLOG
una visión del estado actual de su negocio, y poder generar información útil
para tomas de decisiones en el futuro. Para el desarrollo se aplicarán distintas
herramientas de Business Intelligence de código abierto de la plataforma Pen-
taho.
2.2. Motivación
Hoy en dı́a, muchas de las empresas clientes de InLOG WMS, solicitan la
posibilidad de explotar los datos generados por el sistema utilizando un Busi-
ness Intelligence, al ser una buena oportunidad para explotar los múltiples datos
generados por el sistema de gestión de almacenes.
9
Esto ha provocado el interés en la empresa por implementar una solución
de Business Intelligence para ofrecer a los clientes, y además, atraer a nuevos
clientes.
2.3. Definiciones
Se van a definir algunos conceptos que se utilizarán a lo largo del proyecto,
para facilitar la lectura de este:
10
3. Planteamiento inicial
3.1. Objetivos
3.1.1. Objetivos del proyecto
A continuación, se definen los siguientes objetivos a lograr con el proyecto,
los cuales serán desarrollados a lo largo de la memoria:
Definición del proceso de extracción y transformación de los datos proce-
dentes del WMS, ERP y sistema de recursos humanos.
Desarrollo del Datawarehouse en Oracle
Integración del Datawarehouse con el servidor web de Pentaho
Desarrollo de informes predefinidos parametrizables
Integración de informes ad-hoc en el servidor web de Pentaho
Desarrollo de cubos OLAP e integración de un visor para dichos cubos en
el servidor web de Pentaho
Despliegue del servidor web de Pentaho
11
Este software, al ser el propietario de la empresa, y generar una gran fuente
de datos sobre todo lo relacionado con el almacén, será la principal fuente de
extracción de datos para la implementación de este proyecto.
3.3. Alcance
3.3.1. Fases
El proyecto será dividido en diferentes fases, las cuales a su vez contaran con
un listado de tareas a realizar, mostradas más adelante mediante un diagrama
EDT (estructura de desglose del trabajo). Las fases son las siguientes:
Planificación y Gestión Inicial: Fase inicial del proyecto, donde se definirán
los objetivos del proyecto, las tareas necesarias para llevarlo a cabo y
una planificación temporal estimada del proyecto, mediante el uso del
diagramas EDT y Gantt.
Formación: Fase donde se adquirirán los conocimientos necesarios para
desarrollar el proyecto.
Captura de Requisitos: Fase donde se definirán las distintas funcionalida-
des a implementar realizando reuniones con la empresa.
Análisis y Diseño: Fase donde se identificaran las diferentes herramien-
tas para implementar las funcionalidades, y se realizara el diseño de las
funcionalidades.
12
Figura 2: Ciclo de vida
3.4. Herramientas
Las herramientas hardware y software a emplear son las siguientes:
3.4.1. Hardware
Ordenador portatil con Windows 10
3.4.2. Software
Pentaho BI Suite Community Edition: Conjunto de software libre para
generar Business Intelligence. Se utilizarán los siguientes programas:
BI Server 7.0: Aplicación web desarrollada en Java2EE en la que
podremos gestionar todas las funcionalidades como informes y vista
OLAP implementadas de Pentaho creando un cuadro de mando
Pentaho Data Integration (PDI): Aplicación para transformar datos
desde diferentes fuentes y unificarlos en datawarehouse
Pentaho Report Designer: Aplicación para diseñar informes
Pentaho Schema Workbench: Aplicación para diseñar cubos OLAP
Pentaho Metadata Editor: Aplicación para definir los metadatos del
Datawarehouse
Texmaker: Editor de textos multiplataforma de código abierto para desa-
rrollar documentos con LaTeX, con el cual se desarrollará la memoria del
proyecto
13
GanttProject: Software de código abierto empleado para la gestión de
proyectos usando el diagrama de Gantt.
Eclipse IDE for Enterprise Java and Web Developers: Plataforma de código
abierto para el desarrollo de aplicaciones Java EE y web.
14
3.5. Planificación Temporal
3.5.1. EDT
A continuación se muestra el diagrama EDT con el desglose del trabajo:
Figura 3: EDT
15
3.5.2. Listado de Tareas
A continuación se van a definir el listado de tareas de los cuales están com-
puesta cada fase. Para ello, utilizaremos como plantilla la siguiente tabla:
NOMBRE TAREA
Descripción Breve explicación de la tarea.
Esfuerzo Duración estimada en horas de la tarea.
Listado con las herramientas a utilizar
Recursos necesarios
en la tarea.
Listado de tareas que deben estar com-
Precedente
pletadas para poder comenzar.
Explicación de los hitos obtenidos con
Salidas:
la tarea.
16
Gestión de Riesgos
Identificar aquellos riesgos que pueden
Descripción ocurrir a lo largo del desarrollo del pro-
yecto.
Esfuerzo 3 horas.
Recursos necesarios Texmaker.
Definición de Objetivos y Alcance del
Precedente
proyecto.
Salidas: Gestión de riesgos.
Planificación Económica
Estimación de costes y beneficios que
Descripción
supone el desarrollo del proyecto.
Esfuerzo 3 horas.
Recursos necesarios Texmaker.
Definición de Objetivos y Alcance del
Precedente
proyecto.
Salidas: Planificación Económica.
17
2. Formación
Aprender LaTeX
Aprender el uso de LaTeX para poder
Descripción
realizar la memoria del proyecto.
Esfuerzo 10 horas.
Recursos necesarios Internet
Precedente -
Salidas: -
18
3. Captura de Requisitos
Identificación de funcionalidades
Identificación de las funcionalidades a
Descripción
implementar.
Esfuerzo 10 horas.
Recursos necesarios Texmaker.
Precedente Formación.
Salidas: Listado con las funcionalidades
4. Análisis y Diseño
19
Diseño de los cubos OLAP
Descripción Diseño de la estructura de los cubos.
Esfuerzo 30 horas.
Recursos necesarios Google Drawing.
Precedente Diseño del Datawarehouse.
Salidas: Diagramas de cubos
5. Implementación e Integración
20
Implementación de cubos OLAP y visor
Descripción Implementación de los cubos OLAP
Esfuerzo 10 horas.
Pentaho Schema Workbench y BI Ser-
Recursos necesarios
ver 7.0
Implementación e integración del Data-
Precedente
warehouse.
Salidas: Cubos y visor OLAP
6. Despliegue
21
Pruebas de implementación
Prueba del correcto funcionamiento de
Descripción
las funcionalidades implementadas
Esfuerzo 20 horas.
Recursos necesarios BI Server 7.0
Precedente Despliegue del servidor web.
Salidas: -
7. Documentación
Realización de la memoria
Descripción Realizar la memoria del proyecto
Esfuerzo 80 horas.
Recursos necesarios Texmaker
Precedente Aprender LaTeX
Salidas: Memoria del proyecto
3.5.3. Gantt
Para gestionar las fechas en las que tienen que completar las tareas defi-
nidas anteriormente se utilizará el diagrama Gantt. Se ha estimado que para
la realización del proyecto se empleara aproximadamente 15 horas semanales,
trabajando en el proyecto 3 horas al dı́a de lunes a viernes. En caso de no ser
suficiente, se aumentará la cantidad de horas semanales trabajando los fines de
semana en el proyecto.
22
Figura 4: Diagrama Gantt
23
3.6. Gestión de Riesgos
A la hora de definir un proyecto es importante tener en cuenta los distintos
riesgos que pueden surgir a lo largo del proyecto, los cuales si no los tenemos en
cuenta pueden afectar a la planificación temporal.
Cada riesgo se expondrá de la siguiente manera: una breve descripción del riesgo,
medidas que se emplearan para prevenir el riesgo, plan de contingencia a aplicar
en caso de que el riesgo ocurra, la probabilidad de que ocurra y el impacto que
puede suponer en el proyecto. Estas dos últimas medidas se medirán en cinco
rasgos: muy bajo, bajo, medio, alto y muy alto.
24
Riesgo: Mala planificación temporal
Se tarda mas tiempo en realizar una ta-
Descripción
rea del estimado
Tener en cuenta un margen de tiempo
Medidas de Prevención
en la planificación temporal
Plan de Contingencia Realizar horas extra
Probabilidad Media
Impacto En función del tiempo perdido
25
Riesgo: Diseño inadecuado
El diseño realizado es insuficiente para
Descripción
implementar el proyecto
Realizar la captura de requisitos de la
Medidas de Prevención mejor manera posible para poder reali-
zar el diseño mas ajustado posible
Volver a realizar el diseño en horas ex-
Plan de Contingencia
tra
Probabilidad Baja
Impacto Alto
26
3.7. Planificación Económica
En este apartado se va a hacer un cálculo de los gastos y beneficios que
otorgará el proyecto, para poder ası́ analizar su viabilidad.
3.7.1. Gastos
Tenemos los siguientes gastos:
a. Gasto en personal: Al ser un proyecto realizado aprovechando la beca en
la empresa, se ha estimado que un becario trabajando 3h al dı́a cobra
aproximadamente 330¿ al mes.
27
En este caso, al ser un trabajo que se realizará en su mayor medida en la
oficina de la empresa, no tendremos en cuenta los gastos de Internet, al
ser un gasto independiente de la realización de este proyecto.
e. Gasto total: Agrupando todos los costes, los costes totales en el proyecto
quedan de la siguiente manera:
Gasto
Personal 1980¿
Hardware 78,87¿
Software 63¿
Indirectos 60¿
Total 2181,87 ¿
Tabla 34: Gastos totales
3.7.2. Beneficios
En cuanto a los beneficios que puede otorgar el desarrollo del proyecto, este
es un producto que se espera ofrecer integrado junto al sistema actual de gestión
de almacenes InLOG WMS, y no se va a ofrecer como servicio independiente,
sino que irá integrado en las nuevas versiones del sistema para aumentar la com-
petitividad de este producto en el mercado.
Con lo cual, se espera recuperar la inversión realizada con los nuevos pro-
yectos tanto de adaptación como de posibles nuevos clientes que se puedan
concretar a partir de la implantación de este producto en las nuevas versiones
del sistema.
28
4. Antecedentes
4.1. Situación actual
Actualmente, los clientes de InLOG WMS no disponen de ningún Datawa-
rehouse que unifique los datos de sus diferentes sistemas. Las únicas conexiones
que existen entre los sistemas ERP y WMS es mediante procedimientos de carga
de datos implementados en InLOG WMS para la carga de pedidos, devolucio-
nes... procedentes del ERP utilizando ficheros con una estructura concreta.
29
Figura 5: Proceso ETL
Una vez integrados los datos, se procede a trabajar sobre estos datos utili-
zando herramientas propias de la tecnologı́a Business Intelligence mediante la
creación de cuadros de mando, gráficos, indicadores e informes. Estas herra-
mientas permitirán al usuario explorar los datos de una forma sencilla. [3]
30
Histórico: Guarda los distintos variables que toma una variable en el
tiempo para poder ver evoluciones, comparaciones y buscar patrones.
Tabla 35: Comparativa entre Datawarehouse y base de datos operacional [6] [7]
31
Para realizar consultas contra los cubos, se utilizan consultas MDX, las cua-
les son unas consultas similares a las utilizadas en el lenguaje SQL, pero adap-
tadas para trabajar con estructuras de datos multidimensionales. [22]
32
Power BI Pentaho CE QlikView SAP BI
Procesos ETL SI SI NO SI
Cuadros de mando SI SI SI SI
Informes SI SI SI SI
Cubos OLAP NO SI NO SI
Open Source NO SI NO NO
Precio Gratuito Gratuito Gratuito Pago
Tabla 36: Comparativa entre herramientas de BI [13] [14] [15] [16] [17] [18]
Como se puede ver, entre todas las herramientas analizadas, las únicas con
las que se podrı́a implementar el proyecto son Pentaho CE y SAP Business
Intelligence. Teniendo en cuenta que la herramienta de SAP es de pago, no es
de código abierto, y que con Pentaho podemos implementar prácticamente las
mismas funcionalidades, y al ser código abierto podemos realizar modificaciones
en caso de verlo necesario, la herramienta utilizada para implementar el proyecto
será Pentaho CE. La única diferencia que podemos encontrar entre ellas es
que al ser SAP Business Intelligence una aplicación de pago, el soporte y la
documentación será mucho mayor que el de Pentaho, pero al ser esta última
una solución BI muy popular, existe una comunidad muy activa donde poder
adquirir una buena formación.
4.4.1. Pentaho CE
La herramienta BI escogida para implementar este proyecto es Pentaho BI,
en concreto, Community Edition (CE) 7.0, pues esta es una de las versiones
Open Source con mayor estabilidad, mayor soporte y comunidad activa.
33
Pentaho Schema Workbench (PSW): Es una aplicación de escritorio que
proporciona una interfaz gráfica para diseñar y crear los cubos OLAP, ge-
nerando un fichero XML donde se define la estructura de la base de datos
multidimensional. Proporciona un servidor OLAP en el que permite rea-
lizar consultas MDX contra los cubos creados, y permite una vez creados
los cubos, publicar estos en el servidor web de Pentaho. [24]
Pentaho Metadata Editor: Es una aplicación de escritorio que permite
diseñar un modelo de metadatos a partir del Datawarehouse. [25]
34
5. Captura de requisitos
En este apartado se detallaran los requisitos funcionales y casos de uso que
deberá cumplir el proyecto, para poder alcanzar las necesidades y objetivos del
proyecto definidos anteriormente.
35
5.3. Jerarquı́a de actores
Los tipos de usuarios del sistema son los siguientes: Por un lado, en la aplica-
ción web, el ”Usuario sin registrar” es aquel que accede a la aplicación y aún no
ha iniciado sesión. Una vez que decide iniciar sesión pasa a ser ”Usuario” o ”Ad-
ministrador” en función de su condición. Ambos tienen opción de hacer uso de
las funcionalidades del sistema, pero el ”Administrador” además podrá gestio-
nar los ajustes del sistema, dar de alta nuevos usuarios y gestionar sus permisos.
36
5.4. Casos de uso
37
Programar tareas: Permite programar tareas a ejecutar en el servidor
web.
38
6. Análisis y diseño
6.1. Análisis de la base de datos origen
El primer paso del desarrollo de un proyecto BI es construir el Datawarehou-
se. Para ello, es importante analizar la información de los orı́genes de datos, para
ası́ poder determinar aquella información relevante a exportar para poder rea-
lizar unos informes y cuadros de mando útiles para el cliente.
Las tablas que se van a extraer van a ser tablas de hechos (tablas que alma-
cena los datos de los movimientos que se actualizan continuamente) y tablas de
dimensiones (tablas maestras por las cual se va a poder filtrar o navegar dentro
de la información almacenada en las tablas de hechos).
39
CABECERA DEVOLUCIÓN CLIENTE: Tabla de cabeceras de de-
voluciones de clientes. Se extraerá toda la información de la tabla que
esté comprendida en el rango de fechas marcado por el histórico que
se quiera tener en las tablas históricas del Datawarehouse, teniendo
en cuenta la fecha de alta de la devolución en el sistema.
LINEAS DEVOLUCIÓN CLIENTE: Tabla de lineas de devoluciones
de clientes. Se extraerán todas las lineas de devoluciones correspon-
dientes a las cabeceras extraı́das.
CABECERA DEVOLUCIÓN PROVEEDOR: Tabla de cabeceras de
devoluciones de proveedores. Se extraerá toda la información de la
tabla que esté comprendida en el rango de fechas marcado por el
histórico que se quiera tener en las tablas históricas del Datawa-
rehouse, teniendo en cuenta la fecha de alta de la devolución en el
sistema.
LINEAS DEVOLUCIÓN PROVEEDOR: Tabla de lineas de devolu-
ciones de proveedores. Se extraerán todas las lineas de devoluciones
correspondientes a las cabeceras extraı́das.
ORDENES DE PALET COMPLETO: Tabla de Ordenes Paleta Com-
pleta. Se extraerán los registros de los pedidos de venta extraı́dos.
ORDENES DE PICKING: Tabla de cabecera de órdenes de Picking.
Se extraerán los registros de los pedidos de venta extraı́dos.
LINEAS DE PICKING: Tabla de lineas de picking. Se extraerán
todas las lineas correspondientes a las cabeceras cargadas en ORDE-
NES DE PICKING.
UBICACIÓN DE PICKING: Tabla de ubicaciones de picking. Se
extraerá toda la tabla, al no disponer de ningún histórico del alta de
ubicaciones.
UBICACIÓN DE ALMACENAJE: Tabla de ubicaciones de almace-
naje. Se extraerá toda la tabla, al no disponer de ningún histórico
del alta de ubicaciones.
2. Tablas de dimensiones:
ALMACENES: Tabla de almacenes. Se extraerá toda la información
de la tabla.
ÁREA DESCARGA: Tabla de área descarga. Se extraerá toda la
información de la tabla.
ARTÍCULOS: Tabla de artı́culos. Se extraerá toda la información de
la tabla.
CLIENTES: Tabla de clientes. Se extraerá toda la información de la
tabla.
OPERARIOS: Tabla de operarios. Se extraerá toda la información
de la tabla.
PASILLOS: Tabla de pasillos. Se extraerá toda la información de la
tabla.
PROPIETARIOS: Tabla de propietarios. Se extraerá toda la infor-
mación de la tabla.
40
PROVEEDORES: Tabla de proveedores. Se extraerá toda la infor-
mación de la tabla.
TIPOS MOVIMIENTO: Tabla de tipos de movimientos. Se extraerá
toda la información de la tabla.
TIPOS PEDIDO PROVEEDOR: Tabla de tipos de pedidos de pro-
veedor. Se extraerá toda la información de la tabla.
TIPOS PEDIDO: Tabla de tipos de pedidos de venta. Se extraerá
toda la información de la tabla.
TIPOS PALETA: Tabla de tipos de paleta. Se extraerá toda la in-
formación de la tabla.
Las tablas de dimensiones no tienen fecha por la que se controlará cuan-
do se ha dado de alta un registro. El criterio que deben de seguir todas
las tablas de dimensiones es que sus datos no serán borrados en ningún
momento y serán mantenidos en las tablas históricas del Datawarehouse.
Como fuentes de datos secundarias, tenemos una base de datos procedente
de un ERP, y otra procedente de un sistema de recursos humanos.
La base de datos del ERP es una base de datos relacional MySQL, de la cual
extraeremos los datos de facturación de los pedidos de compra y venta. A con-
tinuación, se listan las modificaciones en las tablas de hechos y dimensiones
definidas anteriormente:
CABECERA DE PEDIDO DE COMPRA: Se añade un nuevo campo
correspondiente al coste del pedido. Se extraerá la información de aquellos
pedidos extraı́dos en InLOG WMS.
41
6.2. Diseño del Datawarehouse
Una vez analizadas las distintas fuentes de datos que van a formar los datos
almacenados en el Datawarehouse, el siguiente paso es realizar un diseño del
modelo dimensional y el modo de carga de datos.
42
Es utilizado cuando alguna de las dimensiones se implementa con más de
una tabla de datos, normalizando ası́ estas tablas y eliminando la redun-
dancia entre los datos. [19]
43
Figura 13: Esquema en copo de nieve de la tabla Paletas
44
Figura 16: Esquema en copo de nieve de la tabla Cabecera de Pedido de Venta
45
Figura 18: Esquema en copo de nieve de la tabla Cabecera Devolución Cliente
46
Figura 20: Esquema en copo de nieve de la tabla Cabecera Devolución Proveedor
47
Figura 22: Esquema en copo de nieve de la tabla Ordenes de Palet Completo
48
Figura 24: Esquema en copo de nieve de la tabla Lineas de Picking
49
Figura 26: Esquema en copo de nieve de la tabla Ubicación de Almacenaje
Al igual que en el paso anterior, se realiza un cubo por cada una de las tablas
de hechos. Para cada cubo se define las dimensiones que lo componen, ya sean
compartidas o propias, y las medidas. Las dimensiones compartidas son aquellas
dimensiones que son utilizadas por más de un cubo, y las dimensiones propias
son aquellas dimensiones únicamente utilizadas en el cubo donde se definen.
50
◦ Nivel Código
Dimensión Propietarios
Jerarquı́a Propietarios
◦ Nivel Nombre
◦ Nivel Código
◦ Nivel Localidad
◦ Nivel Provincia
◦ Nivel Paı́s
◦ Nivel Código Postal
Dimensión Proveedor
Jerarquı́a Proveedor
◦ Nivel Nombre
◦ Nivel Código
◦ Nivel Localidad
◦ Nivel Provincia
◦ Nivel Paı́s
◦ Nivel Código Postal
Dimensión Cliente
Jerarquı́a Cliente
◦ Nivel Nombre
◦ Nivel Código
◦ Nivel Localidad
◦ Nivel Provincia
◦ Nivel Paı́s
◦ Nivel Código Postal
Dimensión Almacenes
Jerarquı́a Almacenes
◦ Nivel Código
◦ Nivel Denominación
◦ Nivel Localidad
◦ Nivel Provincia
◦ Nivel Paı́s
◦ Nivel Código Postal
Dimensión Pasillos
Jerarquı́a Pasillos
◦ Nivel Almacén
◦ Nivel Código
◦ Nivel Denominación
51
◦ Nivel Sección
Una dimensión muy importante que debe estar en todo Datawarehouse es la
dimensión tiempo, pues casi todos los análisis necesitan poder hacerse desde una
perspectiva temporal. Esta dimensión suele estar relacionada con la mayorı́a de
sus tablas de hechos, siendo frecuente que lo haga por mas de una columna. [29]
V DIM TIEMPO
CAMPO FORMATO DESCRIPCIÓN
Fecha con formato
FECHA DATE
DD/MM/YYYY
AÑO NUMBER Año de la fecha
MES VARCHAR Nombre del mes
DIA VARCHAR Nombre del dia
SEMANA NUMBER Número de la semana
SEMESTRE NUMBER Número de semestre
TRIMESTRE NUMBER Número de trimestre
DIAJULIANO NUMBER Fecha juliana
Indica si es dı́a festivo
FESTIVO VARCHAR
o no
52
A continuación, definimos la dimensión tiempo:
Dimensión Tiempo
Jerarquı́a Tiempo
◦ Nivel Año
◦ Nivel Semestre
◦ Nivel Trimestre
◦ Nivel Mes
◦ Nivel Semana
◦ Nivel Dı́a
◦ Nivel Dı́a Juliano
◦ Nivel Festivo
Una vez definidas las dimensiones compartidas, ya podemos definir los cubos:
Cubo Movimientos
Dimensión Artı́culos
Dimensión Operarios
Dimensión Tipo de Movimiento
◦ Jerarquı́a Tipo de Movimiento
Nivel Código Movimiento
Nivel Nombre Movimiento
Dimensión Tiempo: Fecha Inicio
Dimensión Tiempo: Fecha fin
Medida Cantidad
Medida Número artı́culos diferentes
Medida Operarios diferentes
Medida Número movimientos
Cubo Paletas
Dimensión Artı́culos
Dimensión Tipos de Paleta
◦ Jerarquı́a Tipos de Paleta
Nivel Código
Nivel Nombre
Nivel Propietario
Medida Número paletas
Medida Número artı́culos diferentes
Medida Stock paleta
Medida Número movimientos de paleta
Medida Stock mı́nimo paleta
Medida Stock máximo paleta
53
Cubo Cabecera de Pedido de Compra
Dimensión Propietarios
Dimensión Proveedor
Dimensión Tipos Pedido Proveedor
◦ Jerarquı́a Tipos Pedido Proveedor
Nivel Código
Nivel Nombre
Nivel Propietario
Dimensión Área Descarga
◦ Jerarquı́a Área Descarga
Nivel Código
Nivel Denominación
Nivel Almacén
Dimensión Tiempo: Fecha asignada a pedido
Medida Coste
Medida Media Coste
Medida Número de proveedores diferentes
Medida Número de paletas
Medida Operarios diferentes
Medida Número de pedidos
Cubo Lineas de Pedido de Compra
Dimensión Artı́culos
Medida Cantidad pedida
Medida Cantidad recibida
Medida Número de paletas
Medida Número de lineas
Medida Número de pedidos
Medida Artı́culos diferentes
Cubo Cabecera de Pedido de Venta
Dimensión Almacenes
Dimensión Propietarios
Dimensión Clientes
Dimensión Tipos Pedido
◦ Jerarquı́a Tipos Pedido
Nivel Código
Nivel Denominación
Nivel Procesamiento automático
Nivel Agrupación automática
54
Dimensión Tiempo: Fecha de transmisión
Dimensión Tiempo: Fecha de servicio
Medida Coste
Medida Media coste
Medida Número de paletas
Medida Número de pedidos
Medida Clientes diferentes
Medida Peso paletas completas
Medida Peso picking
Medida Volumen paleta completa
Medida Volumen picking
Dimensión Artı́culos
Dimensión Operarios
Medida Cantidad total
Medida Cantidad apta
Medida Cantidad no apta
Medida Número operarios
Medida Artı́culos diferentes
55
Cubo Cabecera Devolución Proveedor
Dimensión Almacenes
Dimensión Propietarios
Dimensión Clientes
Dimensión Operarios
Dimensión Tiempo: Fecha devolución
Medida Proveedores diferentes
Medida Operarios diferentes
Medida Muelles
Medida Número devoluciones
Dimensión Artı́culos
Dimensión Operarios
Medida Cantidad
Medida Número paletas
Medida Número operarios
Medida Artı́culos diferentes
56
Cubo Lineas de Picking
Dimensión Artı́culos
Medida Cantidad pedida
Medida cantidad servida
Medida Artı́culos diferentes
Dimensión Pasillos
Dimensión Artı́culos
Medida Número paletas ubicadas
Medida Artı́culos diferentes
57
6.4. Diseño de los informes predefinidos
Una vez construido el Datawarehouse, un paso para poder realizar un análisis
sobre los datos extraı́dos a este es mediante los informes predefinidos:
1. INFORME PALETAS CADUCADAS:
Muestra los datos sobre aquellas paletas que han caducado en un periodo
determinado.
Parámetros:
Fecha inicio periodo (Obligatoria)
Fecha fin periodo (Obligatoria)
Código de propietario (Opcional)
Se mostrará el código de paleta, nombre de propietario, código de articulo,
nombre de artı́culo, stock de paleta e importe de la paleta (multiplicación
stock de paleta por precio del artı́culo). Los datos se obtendrán de las
tablas de H PALETAS, DIM ARTÍCULOS Y DIM PROPIETARIOS.
58
2. INFORME PEDIDOS DE COMPRA:
Parámetros:
Pedido (Obligatorio)
Se mostrará por un lado, en la cabecera del informe el código de pedido,
tipo de pedido, fecha asignada del pedido al sistema, nombre de almacén,
nombre de propietario, nombre de proveedor, número de paletas, núme-
ro de lineas y situación del pedido. Los datos se obtendrán de las tablas
H CABEC PEDCOM, DIM TIPOS PEDPROV, DIM ALMACENES, DIM PROPIETARIOS
y DIM PROVEEDOR.
Se mostrará una fila de totales, calculando el total del coste del pedido.
59
3. INFORME PEDIDOS DE VENTA:
Parámetros:
Pedido (Obligatorio)
División (Obligatorio)
60
4. INFORME PRODUCTIVIDAD OPERARIOS:
Parámetros:
Fecha inicio periodo (Obligatoria)
Fecha fin periodo (Obligatoria)
Código de operario (Opcional)
Se mostrará el nombre de operario, número de movimientos realizados,
total de tiempo empleado en formato (HH:MI:SS) y coste de operario. Los
datos se obtendrán de las tablas de H MOVIMIENTOS Y DIM OPERARIOS.
61
7. Desarrollo
Para el desarrollo del proyecto, se ha utilizado una maquina con el sistema
operativo CentOS y el cliente Oracle Database 11g instalado.
62
GRANT CREATE ANY VIEW TO pentaho ;
GRANT CREATE PROCEDURE TO pentaho ;
GRANT CREATE TRIGGER TO pentaho ;
GRANT CREATE VIEW TO pentaho ;
GRANT DELETE ANY TABLE TO pentaho ;
GRANT DROP ANY INDEX TO pentaho ;
GRANT DROP ANY SEQUENCE TO pentaho ;
GRANT DROP ANY TABLE TO pentaho ;
GRANT DROP ANY TRIGGER TO pentaho ;
GRANT DROP ANY VIEW TO pentaho ;
GRANT INSERT ANY TABLE TO pentaho ;
GRANT QUERY REWRITE TO pentaho ;
GRANT SELECT ANY TABLE TO pentaho ;
Una vez creado el schema, ya podemos acceder a este mediante PL/SQL
Developer.
63
7.2. Implementación del proceso ETL
El proceso ETL se realizará mediante la herramienta Pentaho Data Integra-
tion (PDI), incluida en la suite de Pentaho CE.
64
2. TABLA DIMENSIONES ÁREA DESCARGA Y PASILLOS
65
MOVIMIENTOS: Extrae la información de la tabla movimientos de
InLOG WMS
ARTICULOS DWH: Extrae la información de la tabla ARTÍCULOS
del Datawarehouse
Unir: Une los datos de los movimientos con los artı́culos del DWH
para obtener el código de identificación del artı́culo.
Filtrar por fecha: Filtra aquellas filas en las que la fecha fin del mo-
vimiento es superior al 1/01/2021
Selecciono valores: Selecciona aquellos valores a insertar, eliminando
los campos de referencia al artı́culo antiguos y añadiendo el código
numérico de identificación del articulo como referencia.
Insertar/Actualizar MOVIMIENTOS: Inserta los datos a la tabla
histórica de MOVIMIENTOS del Datawarehouse
4. TABLA HECHOS PALETAS:
66
MOVIMIENTOS DE PALETAS: Extrae la información de aquellos
movimientos relacionado con paletas de InLOG WMS
Unir 2: Une los datos de las paletas con los movimientos realizados
sobre estas.
Formateo stock: Calcula el nuevo stock de la paleta y formatea el
tipo de datos para hacerlo compatible con el campo STOCK DE
PALETA.
Modifico stock: Actualiza el campo STOCK DE PALETA introdu-
ciendo el nuevo stock calculado.
Formateo valores: Selecciona únicamente aquellos campos correspon-
dientes a la tabla PALETAS, eliminando la información de los movi-
mientos.
Insertar/Actualizar HISTORICO PALETAS: Inserta los datos a la
tabla histórica de PALETAS del Datawarehouse.
5. TABLAS HECHOS PEDIDOS DE COMPRA
67
AREA DESCARGA DWH: Extrae la información de la tabla ÁREA
DESCARGA del Datawarehouse.
PEDIDOS DE COMPRA ERP: Extrae la información de la tabla
PEDIDOS COMPRA del ERP.
CABECERA DE PEDIDO DE COMPRA: Extrae la información de
la tabla CABECERA DE PEDIDO DE COMPRA de InLOG WMS.
Unir 4: Une los datos de las cabeceras de pedido de compra con
las áreas de descarga del Datawarehouse para obtener el código de
identificación del área de descarga.
Unir 5: Une la información de la tabla PEDIDOS COMPRA extraı́da
del ERP y CABECERA DE PEDIDO DE COMPRA extraı́da de
InLOG WMS.
Ordenar por área descarga: Ordena los campos en función del área
de descarga para poder unir con ÁREA DESCARGA DWH
Filtrar por fecha 2: Filtra aquellas filas en las que la fecha de alta del
pedido en InLOG WMS es superior al 1/01/2021.
Selecciono valores: Selecciona aquellos campos a insertar, eliminando
aquellos campos del ERP que no son necesarios.
Insertar / Actualizar Cabecera PedCom. Inserta los datos a la tabla
histórica de CABECERA DE PEDIDO DE COMPRA del Datawa-
rehouse.
LINEAS DE PEDIDOS DE COMPRA: Extrae la información de la
tab la LINEAS DE PEDIDOS DE COMPRA de InLOG WMS.
ARTICULOS DWH: Extrae la información de la tabla ARTÍCULOS
del Datawarehouse.
Unir 6: Une los datos de las lineas de pedido de compra con los
artı́culos del Datawarehouse para obtener el código de identificación
del articulo.
Ordenar por pedido: Ordena los campos en función del pedido.
Filtro por cabeceras insertadas: Filtra aquellas lı́neas de pedidos de
las cuales se han extraı́do las cabeceras.
Selecciono valores 2: Selecciona aquellos campos a insertar.
Insertar / Actualizar Lineas PedCom: Inserta los datos a la tabla
histórica de LINEAS DE PEDIDO DE COMPRA del Datawarehou-
se.
68
6. TABLAS HECHOS PEDIDOS DE VENTA, ORDENES DE PALET COM-
PLETO Y PICKING
69
Selecciono valores 4: Selecciona aquellos campos a insertar, eliminan-
do aquellos campos del ERP que no son necesarios.
Insertar / Actualizar Cabecera Pedven Inserta los datos a la tabla
histórica de CABECERA DE PEDIDO DE VENTA del Datawa-
rehouse.
LINEAS DE PEDIDOS DE VENTA: Extrae la información de la
tabla LINEAS DE PEDIDO DE VENTA de InLOG WMS.
Unir 8: Une las lineas de pedidos de venta con los artı́culos del Da-
tawarehouse para obtener el código de identificación del articulo.
Ordenar por pedido 2: Ordena los campos en función del pedido.
Filtro por cabeceras insertadas 3: Filtra aquellas lı́neas de pedidos de
las cuales se han extraı́do las cabeceras.
Selecciono valores 5: Selecciona aquellos campos a insertar.
Insertar / Actualizar Lineas Pedven Inserta los datos a la tabla
histórica de LINEAS DE PEDIDO DE VENTA del Datawarehou-
se.
ORDENES DE PICKING: Extrae la información de la tabla ORDE-
NES DE PICKING de InLOG WMS.
Filtro por cabeceras insertadas 4: Filtra aquellas ordenes de picking
de las cuales se han extraı́do las cabeceras.
Selecciono valores 6: Selecciona aquellos campos a insertar.
Insertar / Actualizar Ordenes PK Inserta los datos a la tabla histórica
de ORDENES DE PICKING del Datawarehouse.
LINEAS DE PICKING: Extrae la información de la tabla LINEAS
DE PICKING de InLOG WMS.
Unir 9: Une las lineas de picking con los artı́culos del Datawarehouse
para obtener el código de identificación del articulo.
Ordenar por pedido 3: Ordena los campos en función del pedido.
Filtro por cabeceras insertadas 5: Filtra aquellas lı́neas de picking de
las cuales se han extraı́do las ordenes de picking.
Selecciono valores 7: Selecciona aquellos campos a insertar.
Insertar / Actualizar Lineas PK Inserta los datos a la tabla histórica
de LINEAS DE PICKING del Datawarehouse.
70
7. TABLAS HECHOS DEVOLUCIONES CLIENTE
71
8. TABLAS HECHOS DEVOLUCIONES PROVEEDOR
72
9. TABLA HECHOS UBICACIONES DE PICKING
73
UBICACIÓN DE ALMACENAJE: Extrae la información de la tabla
UBICACIÓN DE ALMACENAJE de InLOG WMS.
ARTICULOS DWH: Extrae la información de la tabla ARTÍCULOS
del Datawarehouse.
Unir 15: Une las ubicaciones de almacenaje con los artı́culos del Da-
tawarehouse para obtener el código de identificación del articulo.
Ordenar por pasillo: Ordena las ubicaciones de almacenaje en función
del pasillo para poder unir con la tabla pasillos.
Unir 16: Une las ubicaciones de almacenaje con los pasillos del Da-
tawarehouse para obtener el código de identificación del articulo.
Selecciono valores: Selecciona aquellos campos a insertar. Se eliminan
las referencias antiguas a los artı́culos y pasillos y se añaden los nuevos
códigos de identificación del artı́culo y pasillo.
Insertar / Actualizar Ubicación de almacenaje: Inserta los datos a
la tabla histórica de UBICACIÓN DE ALMACENAJE del Datawa-
rehouse.
11. TABLA DIMENSIONES ALMACENES
74
12. TABLA DIMENSIONES CLIENTES Y PROVEEDORES
75
14. TABLAS DIMENSIONES PROPIETARIOS
76
16. TABLAS DIMENSIONES TIPOS PEDIDO PROVEEDOR Y PALETA
Una vez creadas las transformaciones, definimos los jobs para ejecutar el
proceso ETL.
77
Para lanzar los jobs, se ofrece junto a la aplicación Pentaho Data Integra-
tion utilizada para crear tanto las transformaciones como los jobs un módulo
llamado Kitchen.
Kitchen permite ejecutar jobs diseñados por Pentaho en formato .kjb, o alma-
cenados en un repositorio desde la consola de comandos. Para ello, es necesario
que todos los scripts de la aplicación Pentaho Data Integration tengan permi-
sos de ejecución. Para otorgar los permisos, ejecutamos el siguiente comando
estando situados en la carpeta de la aplicación: [30]
chmod +x * . sh
Ejecutando el script [Link] desde la consola de comandos podemos lanzar
los jobs:
sh k i t c h e n . sh [ o p t i o n s ]
Las opciones interesantes para este comando son las siguientes:
/file:[Link]
Lanza el job definido en [Link]
/logfile:archivoLog
Especifica un archivo donde guardar los logs de la ejecución. Si no se
especifica, se muestran en la consola de comandos.
/level:LogginLevel
Especifica el nivel de log.
En este caso, hemos situado tanto el fichero del job como de las transfor-
maciones en la carpeta de Pentaho Data Integration, y ejecutamos la carga de
datos con el siguiente comando:
sh k i t c h e n . sh / f i l e : ” I n l o g J o b . k j b ”
78
Cron es un demonio que se encuentra de forma nativa en gran parte de las
distribuciones de Linux, el cual permite ejecutar comandos o scripts en función
la programación personalizada que le dé el usuario, con lo cual lo hace un de-
monio muy útil para automatizar tareas. [31]
En este caso, se ha decidió hacer la carga de datos todos los domingos a las
00:00, al ser un dı́a festivo en el que no suele haber movimientos en la base de
datos operativa. Con lo cual, el valor introducido en el archivo crontab será el
siguiente:
00 00 * * SUN sh /home/ e t l / r u n e t l . sh
79
7.3. Implementación de los cubos OLAP
El primer paso para implementar los cubos es desarrollar la vista para la
dimensión tiempo.
Para obtener todas las fechas desde el 1 de enero de 2020 hasta un mes
después de la fecha del sistema en el momento de hacer la consulta haremos uso
de la siguiente función:
SELECT TO DATE( ’ 01/01/2020 ’ )+rownum=1 FECHA
FROM d u a l
CONNECT BY LEVEL <= (SELECT TRUNC(SYSDATE+30=TO DATE( ’ 01/01/2020 ’ ) )
FROM DUAL)
El siguiente paso será definir una consulta que calcule los distintos atributos
de las fechas obtenidas con la función anterior utilizando la función EXTRACT
definida en PLSQL, la cual permite extraer los valores de diferentes elementos
de un dato de tipo DATE (YEAR, MONTH, DAY...), y el procedimiento al-
macenado CALCULA FESTIVO, el cual determina si una fecha es festivo o no
haciendo uso de la tabla auxiliar FESTIVOS, tabla en la que el cliente puede
insertar los dı́as que considera como festivos, y teniendo en cuenta sábados y
domingos como festivos.
Una vez creada la consulta, creamos una vista sobre esta utilizando la función
CREATE OR REPLACE VIEW.
80
La implementación de los cubos se realizará mediante la herramienta Pen-
taho Schema Workbench (PSW) incluida en la suite de Pentaho.
Una vez creadas las dimensiones compartidas, creamos los cubos utilizando
la opción “Add cube”. Las opciones que sobre un cubo son las siguientes:
81
Figura 56: Operaciones sobre un cubo
Para cada dimensión del cubo es necesario indicar en sus atributos cual es
el campo de la tabla de hechos que se relaciona con la dimensión.
82
El schema queda definido de la siguiente manera:
83
7.4. Implementación de informes predefinidos
La implementación de los informes se realizará mediante la herramienta Pen-
taho Report Designer (PRD) incluida en la suite de Pentaho.
Esta herramienta permite diseñar los informes de una forma gráfica y ejecu-
tarlos directamente desde la propia herramienta en múltiples formatos (PDF,
HTML, XLS y CSV) o publicarlos en la aplicación web para poder lanzarlos
desde esta. [33]
84
Una vez definida la fuente de datos, comenzamos a diseñar el informe. Para
ello, disponemos de un workspace de diseño, en el cuál, podremos añadir aquellos
elementos necesarios para diseñar el informe.
85
Disponemos además de un panel de datos, en el cual podremos definir campos
calculados a partir de una fórmula, y los parámetros del informe:
86
7.5. Despliegue de la aplicación web
El corazón de Pentaho es la aplicación web, la cual será la forma en la que
los clientes podrán utilizar los distintos recursos desarrollados de una forma sen-
cilla. Está desarrollada en Java EE con el framework Spring. Al ser open source,
podemos modificar y personalizar todas las caracterı́sticas de esta. [26]
Además, por defecto Pentaho solo está disponible en inglés, por lo que modi-
ficaremos todos los textos de los distintos elementos web a utilizar para traducir
la aplicación a castellano. En la mayorı́a de los componentes de Pentaho tene-
mos una carpeta messages en la que se encuentran los textos y en el caso de los
elementos web modificaremos los jsp y html para traducir la aplicación.
87
7.5.1. Conexión de la aplicación con el Datawarehouse
Para poder hacer uso de los cubos e informes predefinidos es necesario co-
nectar la aplicación web con el Datawarehouse.
88
7.5.2. Despliegue de los cubos OLAP
Para desplegar el cubo OLAP en el servidor web, podemos realizarlo di-
rectamente desde la aplicación Schema Workbench en la que se definieron los
[Link] ello, teniendo el schema de los cubos abiertos, hacemos clic en File
/ Publish
Una vez publicados, podremos ver una nueva fuente de datos del tipo Analy-
sis definida en la pantalla de gestión de fuentes de datos correspondiente al
schema de los cubos.
Para poder realizar consultas contra los cubos de una forma visual, se inclu-
ye con Pentaho el visor JPivot. JPivot es una librerı́a de componentes JSP que
se utiliza para generar tablas OLAP de una forma gráfica. [35]
Pivot4j está disponible tanto como una aplicación web independiente, como
un plugin para instalar en Pentaho, el cual se integra con la aplicación web.
Este plugin se puede descargar desde el Github del desarrollador, o empleando
el Marketplace incluido en el servidor de Pentaho.
89
Para instalar el plugin, clonamos el proyecto git en la carpeta pentaho-
solutions/system y reiniciamos el servidor. Para ello, haremos un git-clone del
proyecto empleando la herramienta TortoiseGit.
90
Con este visor, podemos crear las consultas MDX contra los cubos definidos
anteriormente de una forma gráfica.
Para realizar este plugin, nos hemos basado en el plugin WAQE (Web Adhoc
Query Executor) desarrollado por Jortilles, el cual estuvo disponible hasta la
versión 7 de Pentaho. Este plugin tiene una licencia open source que permite
tratar el software sin restricciones y todo el código está disponible para ser mo-
dificado en el Github del creador.
Para instalar el plugin, haremos al igual que con el visor OLAP, un git-clone
del proyecto Github en la carpeta pentaho-solutions/system y reiniciaremos el
servidor.
91
WAQE está formado por un único cuadro de mando basado en el frame-
work Bootstrap. La parte visual de este plugin está diseñada principalmente
utilizando componentes HTML, Javascript y CSS, mientras que la lógica de ge-
neración de las consultas SQL y su guardado / exportación está implementada
en Javascript y Java respectivamente.
92
Popup filtros: Al pulsar sobre una columna en la selección de datos, se
abre un popup permitiendo al usuario introducir unos filtros sobre esa
columna
Gran parte del contenido de la fila principal y del popup es generado dinámi-
cante mediante el fuente [Link] ubicado en waqe/static/cus-
tom/js.
Para aplicar filtros sobre un campo, se abre un popup al hacer clic sobre
el campo a filtrar. En este popup, se muestra una columna con los valores del
campo disponibles y se va seleccionando en esta columna los valores deseados
haciendo clic sobre estos. A la hora de aplicar filtros sobre campos con una gran
cantidad de datos este método no es práctico, pues deberı́an buscar manualmen-
te entre miles de datos. Para ello, modificaremos el popup de filtros añadiendo
un campo de texto con el que se permitirá añadir un valor manualmente.
El primer paso será modificar el HTML que compone el popup para añadir
un campo de texto donde se introducirá manualmente el valor, y un botón para
añadir el filtro.
93
Realizaremos los siguientes cambios:
Crearemos un array llamado [Link] donde guardaremos los fil-
tros introducidos manualmente
Modificaremos la función [Link], la cual se ejecuta al abrir el popup de
los filtros. Vaciaremos el cuadro de texto y añadiremos un evento onclick
sobre el botón Añadir para añadir el filtro introducido.
94
Modificaremos la función [Link], la cual se ejecuta para borrar
un filtro. Consultaremos si el filtro a borrar está en la lista de filtros
añadidos manualmente, para eliminarlo en ese caso.
95
7.5.4. Creación de metadatos para consultas ad-hoc
Una vez implementada la herramienta que nos permitirá realizar las con-
sultas ad-hoc, el siguiente paso es definir los metadatos sobre los que haremos
la consultas. Para ello, utilizaremos la herramienta Pentaho Metadata Editor
(PME) incluida en la suite de Pentaho.
96
Figura 79: Busqueda de tablas a importar en la herramienta PME
Una vez importadas las tablas, podremos modificar sus caracterı́sticas pa-
ra añadir un nombre personalizado a los campos que se mostrarán desde la
aplicación de consultas, crear campos calculados . . .
Una vez modificadas todas las tablas importadas, creamos un nuevo modelo
de datos haciendo clic en Business Models / New Business Model. Crearemos
los siguientes modelos de datos: Compras, Ventas, Maestros y Control.
Una vez creado el modelo de datos, arrastraremos todas las tablas necesarias
para crear el modelo de datos a el área grafica. Definimos las relaciones entre
las tablas haciendo clic en New Relationship. . .
97
Figura 81: Asistente para la definición de relaciones entre tablas
98
Figura 82: Asistente publicación dominio de metadatos
Una vez importado, podremos ver una nueva fuente de datos del tipo me-
tadata definida en la pantalla de gestión de fuentes de datos correspondiente al
dominio de metadatos.
99
7.5.5. Despliegue de informe predefinidos
Para desplegar los informes predefinidos en el servidor web, podemos reali-
zarlo directamente desde la aplicación Pentaho Report Designer, haciendo clic
en File / Publish por cada uno de los informes a desplegar.
100
Figura 87: Búsqueda informes en la aplicación web
101
Para ello, copiaremos mediante el comando SCP el contenido de la carpeta
pentaho-server en nuestro servidor. Para poder utilizar el comando SCP en
Windows, utilizaremos el bash de Linux incluido en las últimas versiones de
Windows 10. Situándonos en la carpeta pentaho-server, ejecutamos el siguiente
comando:
s c p = r $PWD u s u a r i o @ s e r v i d o r : / r u t a D e s t i n o
En este caso, instalaremos la aplicación web en la carpeta home del usuario
SERVER.
102
Figura 91: Configuración puerto de la aplicación web Pentaho
103
8. Evaluación
Durante el desarrollo del proyecto, se han sometido las diferentes funciona-
lidades a una serie de pruebas para comprobar el buen funcionamiento de la
solución.
Informes ad-hoc
Para realizar las pruebas, se ha utilizado un entorno de desarrollo, el cual es
un reflejo del entorno de producción pero con un número pequeño y limitado de
datos para facilitar las pruebas. Esto es necesario ya que en caso de realizar las
pruebas contra el entorno de producción en un periodo de trabajo, los datos se
modificarı́an constantemente haciendo imposible realizar pruebas contra estos.
Por otro lado, al haberse realizado cambios sobre las claves primarias de
ARTICULOS, AREA DESCARGA y PASILLO, añadiendo un campo numéri-
co secuencial como clave, será necesario comprobar que las referencias a estas
entidades realizadas en las tablas de hechos sean correctas y correspondan a la
entidad original.
104
Figura 93: Resultado pruebas unitarias primera carga de datos
105
8.2. Evaluación medidas cubos OLAP
Una vez comprobada que la carga de datos al Datawarehouse es correcta, el
siguiente paso es comprobar que el cálculo de las medidas por cada uno de los
cubos OLAP es correcto.
Para realizar las comprobaciones, se calculará por un lado los valores de las
medidas de los cubos manualmente contra el Datawarehouse haciendo uso de
consultas SQL desde PLSQL Developer, y se compararán estos valores con los
obtenidos por las consultas MDX contra los cubos generadas en el visor OLAP.
106
Consulta SQL Consulta MDX Resultado
Número movimientos 1945 1945 Correcto
Operarios diferentes 4 4 Correcto
Artı́culos diferentes 380 380 Correcto
Cantidad 4.248.495 4.248.495 Correcto
Tabla 38: Resultado pruebas medidas del cubo movimientos
2. CUBO PALETAS
107
Consulta SQL Consulta MDX Resultado
Coste 510 510 Correcto
Proveedores diferentes 3 3 Correcto
Media coste 3 3 Correcto
Número paletas 1383 1383 Correcto
Operarios diferentes 5 5 Correcto
Número pedidos 170 170 Correcto
Tabla 40: Resultado pruebas medidas del cubo cabecera pedido de
compra
108
Consulta SQL Consulta MDX Resultado
Coste 605 605 Correcto
Media coste 5 5 Correcto
Número paletas 22 22 Correcto
Número pedidos 121 121 Correcto
Clientes diferentes 5 5 Correcto
Peso paletas completas 105.950 105.950 Correcto
Peso picking 6.604.230 6.604.230 Correcto
Volumen paletas com-
186.680 186.680 Correcto
pletas
Volumen picking 21.894.048 21.894.048 Correcto
Tabla 42: Resultado pruebas medidas del cubo cabecera pedido de
venta
109
La consulta SQL a realizar para obtener el cálculo de las medidas del cubo
cabecera devolución proveedor es la siguiente:
SELECT COUNT(DISTINCT CDP PROVEE) NUM PROVEEDORES
,COUNT(DISTINCT CDP OPEDEV) NUM OPERARIOS
,COUNT(DISTINCT CDP MUELLE) NUM MUELLES
,COUNT( 1 ) NUM DEVOLUCIONES
FROM H CABEC DEVPRO;
110
9. CUBO LINEAS DEVOLUCIÓN PROVEEDOR
La consulta SQL a realizar para obtener el cálculo de las medidas es la
siguiente:
SELECT SUM(LDP CANTID) CANTID
,COUNT(DISTINCT LDP PALETA) NUM PAL
,COUNT(DISTINCT LDP ARTIDE) NUM ARTICULOS
,COUNT(DISTINCT LDP OPERAR) NUM OPERARIOS
FROM H LINEAS DEVPRO ;
111
Consulta SQL Consulta MDX Resultado
Número pedidos 80 80 Correcto
Operarios diferentes 3 3 Correcto
Número de lı́neas 408 408 Correcto
Número de contenedo-
820 820 Correcto
res
Volumen contenedores [Link] [Link] Correcto
Peso contenedores 662.295.000 662.295.000 Correcto
Tabla 48: Resultado pruebas medidas del cubo ordenes de picking
La consulta SQL a realizar para obtener el cálculo de las medidas del cubo
ubicación de almacenaje es la siguiente:
SELECT SUM(UAL PALUBI) NUM PALUBI
,COUNT(DISTINCT UAL ARTIDE) NUM ARTICULOS
FROM H UBIC ALMAC ;
112
Consulta Consulta Consulta
Consulta
MDX SQL Al- MDX Resultado
SQL Picking
Picking macenaje Almacenaje
Número paletas
2352 2352 3218 3218 Correcto
ubicadas
Artı́culos diferentes 3262 3262 3 3 Correcto
Tabla 50: Resultado pruebas medidas cubos ubicación de picking
y almacenaje
113
Figura 98: Resultado consulta SQL pedidos de compra
114
Figura 100: Resultado consulta SQL pedidos de venta
115
4. CONTROL
Mostraremos código movimiento, denominación del tipo movimiento, nom-
bre propietario y denominación de articulo de aquellos movimientos de
tipo picking y artı́culo con código 0000001. Ordenaremos los resultados
obtenidos según el código de movimiento.
116
9. Conclusiones y trabajo futuro
9.1. Planificación final
En primer lugar, se ha logrado alcanzar todos los objetivos definidos en el
planteamiento del proyecto.
DURACIÓN DURACIÓN
TAREA
ESTIMADA REAL
Definición de Objetivos y
16 horas 12 horas
Alcance del Proyecto
Planificación temporal del
6 horas 4,5 horas
proyecto
Gestión de riesgos 3 horas 3,5 horas
Planificación económica 3 horas 3 horas
Estudio de antecedentes 14 horas 12 horas
Aprender conceptos bási-
cos de Business Intelligen- 14 horas 14 horas
ce
117
Aprender funcionamiento
28 horas 28 horas
de la plataforma Pentaho
Aprender LaTeX 10 horas 10 horas
Identificación de funciona-
10 horas 8 horas
lidades
Casos de Uso 40 horas 25 horas
Diseño del Datawarehouse 40 horas 36 horas
Diseño de los cubos OLAP 30 horas 28 horas
Diseño de los informes 28 horas 18 horas
Implementación e integra-
15 horas 28 horas
ción del Datawarehouse
Implementación de cubos
10 horas 18,5 horas
OLAP y visor
Integración de informes
8 horas 30 horas
ad-hoc
Despliegue del servidor
15 horas 25 horas
web
Pruebas de implementa-
20 horas 22,5 horas
ción
Realización de la memoria 80 horas 70 horas
Preparación de la defensa 10 horas 8 horas
TOTAL 400 horas 404 horas
Tabla 51: Comparación horas estimadas y reales
118
9.2. Reflexiones personales
Tras finalizar el proyecto, la sensación general hacia el resultado obtenido es
satisfactoria.
Por un lado, pese a contar con los consejos de personas con años de expe-
riencia en puestos de gerencia, me he dado cuenta lo difı́cil que es planificar y
llevar adelante un proyecto de esta magnitud, siendo necesario ser constante en
la realización de los distintos puntos del proyecto para poder llevarlo a cabo.
119
10. Referencias
[1] Inteligencia empresarial: transformación de da-
tos en decisiones. [Link]
inteligencia-empresarial-la-transformacion-de-los-datos-en-decisiones-optimas
(Accedido el 12/02/2021)
[2] ¿En qué consiste un proceso de ETL (Extraer, Transformar y Cargar)?
[Link] (Accedido el
12/02/2021)
[3] Proceso de BI — Dataprix TI
[Link]
13-proceso-bi (Accedido el 12/02/2021)
[4] Beneficios — Dataprix TI
[Link]
14-beneficios (Accedido el 12/02/2021)
[5] Datawarehouse
[Link]
aspx (Accedido el 12/02/2021)
[6] Data base y Data warehouse ¿En qué se diferencian?
[Link]
(Accedido el 12/02/2021)
[7] La base de datos analı́tica (el Datawarehouse o Almacén de Datos)
[Link]
3-la-base-de-datos-analitica-el-datawarehouse-o-almacen-de-datos/
(Accedido el 12/02/2021)
120
[13] ¿Qué es Power BI? — Deloitte España
[Link]
[Link] (Accedido el 13/02/2021)
[14] ¿Qué es QlikView?
[Link]
HelpSites/[Link] (Accedido el 13/02/2021)
[15] SAP Business Intelligence - Cibernetica
[Link] (Accedi-
do el 13/02/2021)
[16] Pentaho Big Data - Business Intelligence España - Stratebi
[Link] (Accedido el 12402/2021)
[17] Caracterı́sticas y diferencias entre Pentaho y Power BI
[Link]
(Accedido el 14/02/2021)
[18] Comparativa Qlikview vs Pentaho
[Link] (Accedido
el 14/02/2021)
[19] Modelo Dimensional - BI Geek Blog
[Link] (Accedido el
24/03/2021)
[20] Data Warehouse y Data Marts - Conoce las diferencias
[Link]
data-warehouse-y-data-marts-esquema-en-estrella-11/ (Acce-
dido el 25/03/2021)
[21] Pentaho Data Integration - Pentaho Documentation
[Link]
Integration (Accedido el 29/03/2021)
[22] Informes parametrizados con report designer en
Pentaho CE [Link]
informes-parametrizados-con-report-designer-en-pentaho-ce
(Accedido el 29/03/2021)
[23] Aspectos básicos de las consultas MDX [Link]
com/es-es/analysis-services/multidimensional-models/mdx/
mdx-query-fundamentals-analysis-services (Accedido el 29/03/2021)
[24] Pentaho Schema Workbench - Pentaho Documentation
[Link]
Workbench (Accedido el 29/03/2021)
[25] Pentaho Metadata Editor
[Link]
Editor (Accedido el 29/03/2021)
[26] Qué es Pentaho BI Server [Link]
que-es-pentaho-bi-server/ (Accedido el 29/03/2021)
121
[27] Archivo PRPT
[Link] (Accedido el
02/04/2021)
122
.
Iniciar Sesión
Postcondiciones -
Interfaz gráfica
123
Tabla 52: Caso de Uso: Iniciar Sesión
Programar Tareas
124
Interfaz gráfica
125
Tabla 53: Caso de Uso: Programar Tareas
126
Realizar consulta
Postcondiciones -
Interfaz gráfica
127
Crear cuadro de mando
Interfaz gráfica
128
Visualizar cubos OLAP
Postcondiciones -
Interfaz gráfica
129
Abrir cuadros de mando
Postcondiciones -
Interfaz gráfica
130
Abrir informes
Postcondiciones -
Interfaz gráfica
131
Tabla 58: Caso de Uso: Abrir informes
Postcondiciones -
Interfaz gráfica
132
Tabla 59: Caso de Uso: Administrar fuentes de datos
133
Administrar usuarios
Postcondiciones -
Interfaz gráfica
134
Administrar Roles de usuario
Postcondiciones -
Interfaz gráfica
135
Tabla 61: Caso de Uso: Administrar Roles de usuario
136
Crear cubo OLAP
Interfaz gráfica
137
Desplegar cubo OLAP
3. Pulsar File/Publish
Interfaz gráfica
138
Definir transformaciones
Interfaz gráfica
139
Definir jobs
Interfaz gráfica
140
Diseñar informe
Interfaz gráfica
141
Publicar informe
Interfaz gráfica
142
12. Anexo II: Definición de metadatos
12.1. Compras
Metadato correspondiente a los pedidos de compra del sistema.
Campos relacio-
Tabla desde Tabla hasta Tipo Cardinalidad
nados
CPC PEDIDO
H CABEC PEDCOM H LINEAS PEDCOM = Inner 1:N
LPC PEDIDO
CPC ALMACE
H CABEC PEDCOM DIM ALMACENES = Inner N:1
ALM CODIGO
CPC PROPIE
H CABEC PEDCOM DIM PROPIETARIOS = Inner N:1
PPR CODIGO
143
CPC PROVEE
H CABEC PEDCOM DIM PROVEEDOR = Inner N:1
PRO CODIGO
LPC ARTIDE
H LINEAS PEDCOM DIM ARTICULOS = Inner N:1
ART IDENTI
Tabla 68: Relaciones metadato de compras
12.2. Ventas
Metadato correspondiente a los pedidos de venta del sistema.
144
Se definen las siguientes relaciones:
Campos relacio-
Tabla desde Tabla hasta Tipo Cardinalidad
nados
CPV PEDIDO
=
LPV PEDIDO,
H CABEC PEDVEN H LINEAS PEDVEN Inner 1:N
CPV DIVPED
=
LPV DIVPED
CPV ALMACE
H CABEC PEDVEN DIM ALMACENES = Inner N:1
ALM CODIGO
CPV PROPIE
H CABEC PEDVEN DIM PROPIETARIOS = Inner N:1
PPR CODIGO
CPV CLIENT =
H CABEC PEDVEN DIM CLIENTES Inner N:1
CLI CODIGO
LPV ARTIDE =
H LINEAS PEDVEN DIM ARTICULOS Inner N:1
ART IDENTI
OPC PEDIDO
=
LPV PEDIDO,
OPC DIVPED
H ORDENES PC H LINEAS PEDVEN = Inner N:1
LPV DIVPED,
OPC CODLIN
=
LPV CODLIN
OPK PEDIDO
=
LPK PEDIDO,
OPK DIVPED
H ORDENES PK H LINEAS PK = Inner 1:N
LPK DIVPED,
OPK NUMORD
=
LPK NUMORD
LPK PEDIDO
=
LPV PEDIDO,
LPK DIVPED
H LINEAS PK H LINEAS PEDVEN Inner N:1
=
LPV DIVPED,
LPK LINPED =
LPV CODLIN
Tabla 69: Relaciones metadato de ventas
145
12.3. Maestros
Metadato correspondiente a los maestros de las entidades del sistema.
Campos relacio-
Tabla desde Tabla hasta Tipo Cardinalidad
nados
ART ALMACE
DIM ARTICULOS DIM ALMACENES = Inner N:1
ALM CODIGO
ART PROPIE
DIM ARTICULOS DIM PROPIETARIOS = Inner N:1
PPR CODIGO
Tabla 70: Relaciones metadato de maestros
146
12.4. Control
Metadato correspondiente al control de los movimientos en el almacén. Está
Paletas (H PALETAS)
Proveedores (DIM PROVEEDOR)
Almacenes (DIM ALMACENES)
Propietarios (DIM PROPIETARIOS)
Campos relacio-
Tabla desde Tabla hasta Tipo Cardinalidad
nados
MVM TIPMOV
H MOVIMIENTOS H TIPOS MOVIMIENTO = Inner N:1
TMV CODIGO
PAL CODIGO
H PALETAS H MOVIMIENTOS = Inner 1:N
MVM PALETA
147
MVM ARTIDE
H MOVIMIENTOS DIM ARTICULOS = Inner N:1
ART IDENTI
ART IDENTI
DIM ARTICULOS H PALETAS = Inner N:1
PAL ARTIDE
ART ALMACE
DIM ARTICULOS DIM ALMACENES = Inner N:1
ALM CODIGO
ART PROPIE
DIM ARTICULOS DIM PROPIETARIOS = Inner N:1
PPR CODIGO
Tabla 71: Relaciones metadato de control
148
13. Anexo III: Pruebas unitarias del proceso ETL
Para la implementación de las pruebas del proceso ETL, se utilizará la he-
rramienta de testing automatico en Java JUnit 4.
149
La clase ConexionBD, es una clase abstracta la cual contendrá los métodos
comunes necesarios para trabajar con ambas bases de datos.
150
La clase ConexionBDOPeracional es una clase que hereda de ConexionBD,
la cual contendrá un atributo que indica la fecha de carga de datos al Da-
tawarehouse y los métodos necesarios para trabajar contra la base de datos
operacional.
Constructor: Llama al constructor de la clase padre pasándole como paráme-
tro los datos de conexión a la base de datos operacional.
obtenerNumMovimientos: Devuelve el número de registros en la tabla MO-
VIMIENTOS cuya fecha es superior a la fecha de carga de datos al Data-
warehouse establecida.
obtenerNumCabecPedcom: Devuelve el número de registros en la tabla
CABEC PEDCOM cuya fecha asignada es superior a la fecha de carga de
datos al Datawarehouse establecida.
obtenerNumLineasPedcom: Devuelve el número de registros de la tabla
LINEAS PEDCOM cuya fecha de cabeceras es superior a la fecha de carga
de datos al Datawarehouse establecida.
obtenerNumCabecPedven: Devuelve el número de registros en la tabla
CABEC PEDVEN cuya fecha de transmisión es superior a la fecha de
carga de datos al Datawarehouse establecido.
obtenerNumLineasPedven: Devuelve el número de registros de la tabla
LINEAS PEDVEN cuya fecha de cabeceras es superior a la fecha de carga
de datos al Datawarehouse establecida.
obtenerNumCabecDevcli: Devuelve el número de registros en la tabla CA-
BEC DEVCLI cuya fecha de devolución es superior a la fecha de carga de
datos al Datawarehouse establecida.
obtenerNumLineasDevcli: Devuelve el número de registros de la tabla LI-
NEAS DEVCLI cuya fecha de cabeceras es superior a la fecha de carga de
datos al Datawarehouse establecida.
obtenerNumCabecDevpro: Devuelve el número de registros en la tabla
CABEC DEVPRO cuya fecha de devolución es superior a la fecha de
carga de datos al Datawarehouse establecida.
obtenerNumLineasDevpro: Devuelve el número de registros de la tabla
LINEAS DEVPRO cuya fecha de cabeceras es superior a la fecha de carga
de datos al Datawarehouse establecida.
obtenerOrdenesPC: Devuelve el número de registros de la tabla ORDE-
NES PC cuyos pedidos han sido cargados al Datawarehouse.
obtenerOrdenesPK: Devuelve el número de registros de la tabla ORDE-
NES PK cuyos pedidos han sido cargados al Datawarehouse.
obtenerLineasPK: Devuelve el número de registros de la tabla LINEAS PC
cuyas ordenes han sido cargadas al Datawarehouse.
obtenerArticuloMovimiento: Devuelve un objeto del tipo Artı́culo con la
referencia al artı́culo del movimiento pasado como parámetro.
151
obtenerArticuloPaleta: Devuelve un objeto del tipo Artı́culo con la refe-
rencia al artı́culo de la paleta pasada como parámetro.
obtenerArticuloPedcom: Devuelve un objeto del tipo Artı́culo con la refe-
rencia al artı́culo de la linea de pedido de compra pasada como parámetro.
obtenerArticuloPedven: Devuelve un objeto del tipo Artı́culo con la refe-
rencia al artı́culo de la linea de pedido de venta pasada como parámetro.
obtenerArticuloDevcli: Devuelve un objeto del tipo Artı́culo con la referen-
cia al artı́culo de la linea de devolución de cliente pasada como parámetro.
obtenerArticuloDevpro: Devuelve un objeto del tipo Artı́culo con la re-
ferencia al artı́culo de la lı́nea de devolución de proveedor pasada como
parámetro.
Se implementarán los distintos test automáticos en el fichero [Link].
Los métodos implementados son los siguientes:
numeroFilasTablasHechos y numeroFilasTablasDimensiones comprobarán
que el número de filas insertadas al Datawarehouse de las diferentes tablas
de hechos y dimensiones sea correcto.
comprobarArticuloMovimientos, comprobarArticuloPaletas, comprobarAr-
ticuloPedcom, comprobarArticuloPedven, comprobarArticuloDevcli, com-
probarArticuloDevpro comprobarán que la nueva referencia al artı́culo ba-
sada en un campo numérico sea correcta.
comprobarAreDesPedcom comprobará que la nueva referencia a el área de
descarga basada en un campo numérico sea correcta.
comprobarPasilloUbicPicking y comprobarPasilloUbicAlmac comprobarán
que la nueva referencia a el pasillo basada en un campo numérico sea co-
rrecta.
Para obtener los datos necesarios en estos métodos se utilizarán las clases
definidas anteriormente.
152
14. Anexo IV: Manual de usuario
14.1. Introducción
En este manual se procede a explicar cómo hacer uso de la aplicación web
de Pentaho.
153
14.3. Consola de usuario
La interfaz desde la perspectiva “Inicio” de la consola de usuario es la si-
guiente:
Las posibles opciones para realizar desde la consola de usuario son las si-
guientes:
154
Inicio: Muestra la interfaz de inicio de la aplicación
Abierto: Muestra los recursos abiertos (consultas ad-hoc, visores olap,
informes...)
Examinar: Se muestra la pantalla menú ficheros. Permite navegar
entre los directorios de archivos de la aplicación.
Marketplace: Permite acceder al marketplace de Pentaho para insta-
lar plugins desarrollados y publicados por la comunidad.
Programaciones: Se muestra la pantalla programaciones. Permite ges-
tionar las tareas programadas en la aplicación.
Administración: Se muestra la pantalla administración. Permite ad-
ministrar las opciones de la aplicación.
2. Muestra el nombre de usuario identificado en la aplicación. Tras pulsar
sobre él se abre un menú desplegable que permite cerrar la sesión.
3. Menú de recursos de la aplicación:
Ficheros. Se muestra la pantalla menú ficheros. Permite navegar entre
los ficheros de la aplicación.
Crear nuevo. Permite crear una nueva consulta contra el Datawa-
rehouse, cubo OLAP o crear un cuadro de mando. Tras situar el
cursor sobre “Crear nuevo” se abre un desplegable mostrando las
opciones posibles:
155
14.4. Menú ficheros
Permite navegar entre las carpetas y ficheros alojados en el servidor, como
consultas ad-hoc guardadas, cuadros de mando creados e informes predefinidos.
156
Figura 118: Interfaz menú ficheros con acciones sobre fichero
157
14.5. Menú programaciones
Permite administrar las tareas programadas en la aplicación.
158
14.6. Menú administración
Permite administrar las diferentes opciones de administrador de la aplica-
ción:
Gestión de usuarios.
Gestión de roles.
Configuración del servidor de correo electrónico.
159
Servidor de correo: Permite configurar un servidor de correo electrónico
para enviar correos automáticamente.
160
14.7. Consultas ad-hoc
Pantalla accesible desde Crear Nuevo / Consultas o Herramientas / Consul-
tas.
161
14.7.1. Diseñar consulta
Para realizar una consulta, es necesario seleccionar el modelo de datos sobre
el que se realizará la consulta, no siendo posible realizar consultas contra mas
de un modelo de datos a la vez.
162
Figura 128: Popup selección de filtros sobre un campo
Tras aplicar un filtro sobre algún campo, este aparecerá en el apartado filtros
de la pantalla consultas ad-hoc. Los filtros se mostrarán de la forma CÓDIGO
CAMPO: VALORES:
163
14.8. Consultas OLAP
Pantalla accesible desde Crear Nuevo / Visor OLAP o Archivo / Nuevo /
Consulta OLAP.
164
Tenemos las siguientes pestañas:
Navegador OLAP: Muestra los cubos contra los que realizar una consulta.
165
14.9. Informes predefinidos
Para abrir un informe predefinido, es necesario abrir un fichero .prpt desple-
gado en el servidor desde el menú ficheros.
Una vez abierto el fichero, se muestra la pestaña para configurar los paráme-
tros del informe:
Se muestran:
Campos obligatorios para poder lanzar un informe.
Campos opcionales.
Tipo de Salida: Indica el formato en el que se mostrará el informe (HTML,
Excel, PDF. . . ). En caso de seleccionar la opción HTML se mostrará en
la misma página debajo de la pestaña de configuración de informe.
166
Una vez seleccionados los parámetros, pulsar el botón “Ver informe” para
lanzar el informe.
167