MANUAL DEL ETL DE PENTAHO PDI PENTAHO DATA INTEGRATION PREVIOUS KETTLE INTEGRANTES: Collaguazo Adriana Cornejo Grace Pesantez Joffre Solis Galo 01/05/2009 ANTECENDENTES Pentaho es un suite de herramientas de inteligencia de negocios que tiene dos versiones, la versión comercial y la versión de código abierto. Para el caso de la materia Data warehouse que estamos cursando, solo utilizaremos la herramienta PDI (Pentaho Data Integration) el cual es una ETL que nos permitirá extraer la información de una base de datos OLTP, transformar la información a través de un modelo dimensional y cargar los resultados de la transformación en una base de datos destino tipo Data warehouse, para que luego pueda ser consultada (consultas ad-hoc) y analizada a través de herramientas para desarrollar reportes especializados las cuales Pentaho también posee. REQUISITOS PREVIOS A LA INSTALACIONDEL PDI Requisitos mínimos de hardware Procesador de arquitectura Pentium de 2.0 GHZ 768 MB de memoria RAM Disco Duro con al menos 2 GB libres Requisitos de software Java run Time Enviroment 5 o posteriores MySQL version 5 o posteriores PASOS PARA LA INSTALACION Los siguientes son los pasos para instalar el PDI en un computador: Descargar el archivo .zip del sitio Web de Pentaho que contiene el PDI: pdi-open-3.1.0-826.zip Descomprimir el archivo en cualquier ubicación dentro de C: PASOS PARA LA IMPLEMENTACION DE NUESTRO ETL De manera resumida los pasos para la implementación de nuestro ETL son: Creación de la base de datos que contendrá el repositorio Creación del repositorio Extracción de los datos desde Microsoft Access Creación de una tabla INPUT Definición de las tablas de dimensiones Definición de la tabla de hecho Carga o exportación de la tabla de hecho Vamos a detallar cada uno de pasos mencionados. CREACION DE LA BASE DE DATOS DEL REPOSITORIO Como era de suponer, antes de crear el repositorio debemos crear la base de datos que lo contenga. Para esto ejecutamos MySQL, ingresando a la carpeta bin de MySQL y ejecutamos: mysqld --console mysql -u root create database repositorio; Cabe señalar que “repositorio” es el nombre que le pusimos a la base de datos del repositorio. CREACION DEL REPOSITORIO Para crear el repositorio entramos a la carpeta donde descomprimimos el archivo pdi-open-3.1.0826.zip del PDI y ejecutamos el archivo: spoon.bat o de manera alternativa kettle.exe Se presentará un cuadro de diálogo “Selecciona un catálogo”, donde presionaremos el botón “New”. Se nos presentara una nueva ventana donde presionaremos el botón “New”. Se nos presentara una nueva ventana, la cual llenamos con los datos encerrados en cuadrados. Luego de llenar los datos realizamos un test de la conexion. Si la conexión está bien definida y la base de datos a la cual nos conectamos existe entonces luego de presionar el botón de Test debemos obtener: Presionamos el botón de Aceptar y en la parte inferior de la ventana presionamos el botón de OK adicional. Se ha creado de esta manera la conexión. Se nos presenta nuevamente la ventana anterior y debemos presionar “Create or Upgrade” para de esa manera terminar de definir nuestro repositorio. Al presionar este botón, el PDI crea en nuestra base “repositorio” una tablas que el usara para poder almacenar la metadata de las transformaciones. Luego de presionar este botón debemos obtener la siguiente ventana de anuncio: Luego presionamos el botón de Aceptar. Podemos observar que es necesario ponerle un nombre a nuestro repositorio, el nombre superior tan solo es el nombre de la conexión a nuestra base de datos. En nuestro ejemplo colocaremos el nombre “repositorio”. Luego presionamos OK, se nos presentara la ventana inicial donde seleccionamos nuestro repositorio y nos logoneamos con las credenciales: o Login: admin o Password: admin En hora buena, hemos completado la definición y creación de nuestro repositorio. EXTRACCION DE LOS DATOS DESDE MSACCESS Luego de que terminamos el paso anterior inmediatamente se nos abrirá la siguiente ventana: Hacemos doble click sobre la carpeta transformación y se nos presentara la siguiente pantalla: Si hacemos doble click sobre la carpeta input se nos abrirá la lista desplegable de opciones. De la lista desplegable seleccionamos Table Input. Seleccionamos Table input y lo arrastramos a la zona de Diseño: Hacemos doble click sobre table input y seleccionamos Connection en la opción New, se nos presentara lo siguiente: Pero esta tabla que estamos creando debe obtener datos de MSAccess para lo cual debemos crear una conexión a la base de datos. Para esto vamos a Panel de Control, luego a Herramientas Administrativas y hacemos doble click sobre Data Sources (ODBC). Como vemos, seleccionamos MS Access Database y presionamos el botón Configure: Al presionar el botón Configure y cambiamos el Nombre del ODBC a AccessDatos, luego presionamos el botón Seleccionar. Luego seleccionamos la ruta donde se encuentra la base de Datos Access. Al cambiar el nombre de la Conexión a AccessDatos en la conexión, ese nombre le colocamos en la pantalla de la definición de la conexión de la Table Input: Hacemos un test para probar la conexión y luego presionamos OK. Ahora volvemos al cuadro de dialogo del Table Input en el que colocaremos una sentencia SQL para poder agrupar todas las tablas de la base Access en una sola tabla: SELECT paralelo.*, materia.*, paralelo_estudiante.*, ingreso_carrera.* FROM ingreso_carrera INNER JOIN ((paralelo INNER JOIN paralelo_estudiante ON paralelo.id_paralelo = paralelo_estudiante.id_paralelo) INNER JOIN materia ON paralelo.codigo_materia = materia.codigo_materia) ON ingreso_carrera.cedula_est = paralelo_estudiante.cedula_estudiante; En la siguiente figura se muestra la sentencia SQL colocada: DEFINICION DE LAS TABLAS DE DIMENSIONES Para la creación de las Tablas de Dimensiones hago doble click sobre la carpeta Data warehouse y selecciono el icono de “Combination lookup/update” y lo arrastramos sobre la zona de diseño. Ahora para conectar los dos iconos presionamos la tecla SHIFT y hacemos el proceso de arrastrar desde el icono de Table Input hacia el destino que es el icono de Combination lookup/update (drag and drop). Luego hacemos doble sobre el icono de “Combination lookup/update” y se nos presenta la siguiente pantalla: Definimos la conexión a la base destino que albergara la tabla de dimensión resultante (solo se crea la estructura, no esta cargada con datos). Para esto hacemos click en el botón New y llenamos los campos como se muestra en la figura: Luego de presionar el botón Aceptar volvemos a la ventana anterior y presionamos el botón “Get Fields” para obtener los campos de la Tabla input y en el caso de la dimensión unidades, solo escogemos el campo codigo_unidad y eliminamos el resto. Ahora colocamos el primary key de nuestra tabla de dimensión que se llamara id_unidad En el mismo cuadro de dialogo existe la opción SQL la seleccionamos y se nos presentara la siguiente pantalla: Finalmente presionamos el botón Execute, se corre el script que crea la estructura de la nueva tabla de dimensión en nuestra base de datos destino “repositorio”, damos click en OK. Se nos presenta la pantalla anterior y debemos presionar OK. Realizamos los mismos pasos para crear las demás tablas de dimensión: materias, estudiante y tiempo con sus respectivo campos primarios (PK): id_materias, id_estudiante, id_tiempo. Para definir la tabla de dimensión materias usamos el botón “Get Fields” seleccionamos los campos código_materia, id_unidad de la Tabla Input. Para la tabla de dimensión estudiante se seleccionan por medio del botón “Get Fields” los campos cedula_estudiante, matricula de la Tabla Input para conformarla. Para la tabla de dimensión tiempo se seleccionan por medio del botón “Get Fields” los campos anio, termino de la Tabla Input para conformarla. Seleccionamos la carpeta Transform se desplegaran varias opciones, escogemos la función Select Values que permite seleccionar campos en una fila. Luego presionamos el botón “Get fields to select” para obtener los campos de la tabla input, solo debemos dejar las claves primarias (ID) de cada tabla de dimensiones. Ahora en la carpeta Transform utilizamos la función Sort rows que permite sortear filas/ordenar datos basados en los valores de los campos. Luego damos click en el botón Get fields para obtener los ID de cada tabla dimensional. Es importante definir la función Sort rows antes de la función Group by que posteriormente utilizamos. Seleccionamos de la carpeta Transform la función Group by que permite agrupar los ID haciendo referencia a los foráneos de las tablas de dimensiones. Se crea el campo con el nombre de “hecho” y de tipo Number of values que es la función de agregación ya que los registros son por unidad, y solo puede existir un registro en una materia por cada estudiante, entonces siempre se tendrá el valor de 1. Seleccionamos en la carpeta Output seleccionamos la función Table output que permite escribir información a una tabla de base de datos. Luego damos click en el botón SQL aparecerán las sentencias que se ejecutaran al presionar el botón Execute. Al presionar el botón Execute se presentaran los resultados de las sentencias SQL en una ventana, damos click en OK. Nuestro Modelo Dimensional resultante sería el que presentamos a continuación: En la Base de Datos Mysql “repositorio” se crearon las siguientes tablas: Para ejecutar la transformación hacemos click en el botón “Replay this transformation” y se mostraran los resultados.