Está en la página 1de 22

TUTORIAL DE

PENTAHO: DEFINICIN
DE UN PROCESO ETL
CON SPOON
Miguel Velasco Gmez-Pantoja (jvel)

Contenido
Lista de ilustraciones..................................................................................3
Introduccin................................................................................................ 4
Descarga e instalacin de la herramienta...................................................4
Definicin del proceso................................................................................. 4
Trabajo con Spoon....................................................................................... 6
Lectura de datos (Extract).......................................................................6
Transformacin de datos (Transform).....................................................13
Carga de datos (Load)............................................................................16

Lista de ilustraciones
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin
Ilustracin

1 Fichero de personas.............................................................5
2 Fichero de poblacin............................................................5
3 Paleta de entrada.................................................................7
4 Seleccin del fichero de entrada..........................................8
5 Definicin del contenido del fichero de entrada...................9
6 Delimitacin de los campos del fichero de personas...........9
7 Nombres de los campos de personas.................................10
8 Previsualizacin de los datos de personas.........................10
9 Seleccin del fichero CSV de entrada.................................11
10 Definicin del contenido del fichero CSV de entrada.......12
11 Definicin de campos del fichero CSV de entrada............13
12 Envo de informacin entre pasos....................................14
13 Divisin de los campos cdigo y nombre.........................14
14 Envo de informacin al paso de bsqueda......................15
15 Configuracin de la bsqueda en flujo.............................16
16 Definicin de la tabla de personas...................................16
17 Envo de informacin para la escritura en base de datos.17
18 Configuracin de la conexin a base de datos.................18
19 Mapeo de los datos a insertar..........................................19
20 Configuracin del paso de salida a tabla..........................19
21 Opciones de ejecucin.....................................................20
22 Resultados de la ejecucin...............................................20
23 Contenido de la base de datos.........................................21

Introduccin
Es muy habitual en el trabajo de un informtico tener que desarrollar
cargas de datos entre distintas fuentes. Por ejemplo cuando se requiere una
migracin entre bases de datos de distintas tecnologas, o cuando se quieren
cargar los datos de un Sistema que slo permite su exportacin en ficheros
de texto, CSV, o Excel. En estos casos se suele recurrir al desarrollo de
programas, ya sean en lenguaje Java, PL/SQL...
En este tutorial veremos las posibilidades que ofrecen las herramientas de
Bussines Intelligence (BI) para realizar este tipo de cargas sin necesidad de
programar cdigo especfico.
Dentro del BI, la fase de integracin de datos se orienta a obtener
informacin de distintas fuentes de datos, independientemente de su
tecnologa, y a realizar transformaciones sobre esa informacin para cargarla
en un almacn desde el que se pueda explotar, en los procesos conocidos
como ETL (Extraer, Transformar, Cargar).
El objetivo de este tutorial es mostrar cmo utilizar la fase de integracin
de datos para realizar cargas haciendo uso de la suite de BI Pentaho, y en
concreto, dentro su mdulo de integracin de datos, de la herramienta
Spoon.

Descarga e instalacin de la herramienta


El mdulo de integracin de datos de Pentaho puede descargarse desde
su Web, en la siguiente url: http://kettle.pentaho.com/. En este tutorial
trabajamos con la versin 4.0.1 para Windows.
NOTA: la versin 4.1, que es la ms nueva a fecha de este tutorial, da
problemas a la hora de arrancar en sistemas Windows; es por eso que
utilizamos la versin 4.01.
Con la descarga obtendremos un fichero comprimido en Zip, y la
instalacin es tan simple como extraer su contenido en la ubicacin en que
se quiera tener Pentaho.

Definicin del proceso

El proceso que vamos a desarrollar en este tutorial pretende obtener


informacin de un fichero de texto, realizar un sencillo tratamiento de los
datos, y cargarlos finalmente en una base de datos.
Como entrada vamos a trabajar con dos ficheros. El primero de ellos
contendr datos de personas en lneas con un formato fijo, tal como se
muestra en la imagen.

Ilustracin 1 Fichero de personas

Nuestro objetivo va a ser almacenar en una base de datos el dni de cada


uno de estas personas, junto con el nombre de su provincia de nacimiento.
Este dato lo encontramos en el fichero de personas, dado por los dos dgitos
situados en las posiciones 182 y 183 de cada lnea. Esos dos dgitos
corresponden con el cdigo de la provincia.
Como lo que queremos es almacenar el nombre, vamos a tener que
obtenerlo. Para ello disponemos de un fichero CSV descargado directamente
de la Web del Instituto Nacional de Estadstica (www.ine.es), como el que se
muestra a continuacin.

Ilustracin 2 Fichero de poblacin

En este fichero tenemos las cifras de poblacin de todas las provincias


espaolas, y stas estn identificadas tanto por su nombre como por su
cdigo. De modo que utilizaremos esta informacin para obtener el nombre
asociado a cada cdigo encontrado en el fichero de personas.
Lo ltimo que haremos ser almacenar en una base de datos los datos
procesados.

Trabajo con Spoon


Dentro del directorio de instalacin, en la carpeta data-integration,
tenemos el fichero Spoon.bat, mediante el que podemos arrancar la
herramienta. Spoon puede trabajar almacenando los procesos creados en un
repositorio (que puede estar basado en una base de datos o en ficheros), o
bien directamente en ficheros en el equipo local. Para este tutorial
utilizaremos la segunda opcin, para ahorrarnos algunos pasos de
configuracin. Por tanto, podemos cerrar el dilogo mostrado al arrancar la
herramienta, que est destinado a configurar la conexin al repositorio.
Una vez abierta la herramienta, empezamos a trabajar generando una
transformacin, a travs del men Fichero Nuevo. As se har visible la
paleta, en la pestaa diseo, desde la que podemos seleccionar las
operaciones que formarn parte de nuestra transformacin. En el lado
derecho podemos ver una representacin grfica de la transformacin que
estamos creando, que lgicamente se encuentra todava vaca.

Lectura de datos (Extract)


El primer paso ser la obtencin de informacin de distintas fuentes de
datos. Las alternativas que nos ofrece la herramienta las podemos ver en la
categora Entrada de la paleta, en la que encontramos componentes para
acceder a ficheros de texto, servidores LDAP, bases de datos, etc.

Ilustracin 3 Paleta de
entrada

Vamos a empezar seleccionando la opcin Entrada de Fichero de Texto. La


arrastramos sobre nuestra transformacin, y hacemos doble clic para acceder
a su configuracin. Lo primero que tenemos que hacer es darle un nombre, y
seleccionar los ficheros de entrada. Este proceso puede obtener la
informacin de uno o varios ficheros, que podemos ir aadiendo desde la
pestaa Fichero. Nombramos el paso como Leer personas, y seleccionamos y
aadimos el fichero de personas.

Ilustracin 4 Seleccin del fichero de entrada

A continuacin tenemos que configurar cmo se obtendr la informacin,


desde la pestaa Contenido. Podemos trabajar con ficheros CSV o de formato
fijo. En ambos casos podremos configurar la carga de una forma muy
intuitiva. Para este primer caso vamos a trabajar con un fichero de formato
fijo, por lo que seleccionamos esta opcin (Fixed).
Nuestro fichero de entrada muestra directamente los datos, sin contener
ningn tipo de cabecera previa. Por tanto, tenemos que desmarcar el
checkbox correspondiente.

Ilustracin 5 Definicin del contenido del fichero de entrada

Con esta configuracin podemos pasar a la pestaa Campos, en la que


tenemos que indicar qu valores vamos a obtener del fichero. Para ello
tenemos a nuestra disposicin un ayudante muy til, disponible a travs del
botn Traer Campos. Si pulsamos sobre l, al haber seleccionado
anteriormente la opcin Fixed como tipo de fichero, se abre una nueva
ventana en la que vemos el contenido del mismo. En esta ventana podemos
definir los campos pinchando sobre el contenido, con lo que creamos marcas
que delimitarn dnde empieza y acaba cada uno.

Ilustracin 6 Delimitacin de los campos del fichero de personas

Una vez marcados los campos accedemos a la siguiente ventana, en la


que podemos dar un nombre y tipo a cada uno de ellos. Para simplificar este
paso podemos pulsar el botn Adivina Todos. Si vamos recorrindolos, vemos
que la herramienta ha asignado a cada campo el tipo que le corresponde
(cadena o nmero), y su longitud.
Asignamos un nombre descriptivo a cada uno de los campos. En el caso
del campo codigoProvincia vamos a cambiar el tipo a String, y pulsamos en
finalizar.

Ilustracin 7 Nombres de los campos de personas

Volvemos a las propiedades del paso, desde donde podemos pulsar el


botn Previsualizar filas para ver los datos ledos del fichero de acuerdo a
esta configuracin. Previamente se nos preguntar mediante un dilogo
cuntas filas queremos previsualizar. Esta opcin es interesante cuando
trabajamos con fuentes de datos grandes, evitando procesar todos los
registros cuando lo nico que queremos es ver cmo quedara el resultado.

Ilustracin 8 Previsualizacin de los datos de personas

Completamos el proceso pulsando el botn Vale.


Con este primer paso hemos obtenido una coleccin de datos sobre
personas, que queremos ampliar con una nueva columna que contenga el
nombre de la provincia. Antes de nada tenemos que leer el otro fichero de
texto, del que extraeremos esa informacin.
El fichero de poblaciones es un fichero CSV. Para leer este tipo de ficheros
existe un paso en Spoon denominado CSV file input, que normalmente sera
el ms apropiado. Este paso permite hacer lo mismo que el que utilizamos
anteriormente (Entrada fichero de texto), pero de una forma ms simple al
eliminar gran parte de las opciones presentes. Sin embargo, el fichero que
vamos a leer ahora tiene una cabecera de 8 lneas que tenemos que ignorar,
y esta posibilidad slo la tenemos con Entrada fichero de texto. Por tanto,
volvemos a arrastrar el paso sobre nuestra transformacin, y accedemos a
las propiedades haciendo doble clic. Le damos el nombre Leer poblaciones, y
aadimos a la lista de ficheros seleccionados el de poblaciones.

Ilustracin 9 Seleccin del fichero CSV de entrada

Pasamos a la pestaa Contenido, donde seleccionamos el tipo CSV, y


modificamos el separador al carcter coma (,). El closure lo quitamos,
dejndolo en blanco. En el campo de cabecera, que en este caso s dejamos
marcado, indicamos 8 para el nmero de lneas de cabecera. Marcamos
tambin el de pie, e igualmente le damos el valor 8, que son las lneas en las
que se cita al INE, y se indican sus datos de contacto.

Ilustracin 10 Definicin del contenido del fichero CSV de entrada

Nos vamos por ltimo a la pestaa Campos. Normalmente utilizaramos el


botn Traer campos para que la herramienta se encargue por s misma de
detectar los campos disponibles en el fichero. Sin embargo, si probamos con
nuestro fichero veremos que detecta un nico campo, as que vamos a meter
la configuracin a mano. Creamos dos campos de tipo cadena en los que se
leern el cdigo y nombre de la provincia por un lado, y el nmero de
habitantes por el otro.

Ilustracin 11 Definicin de campos del fichero CSV de entrada

En este punto podemos pulsar Previsualizar filas para ver la informacin


que obtendremos al ejecutar el paso. Posteriormente aceptamos el dilogo.

Transformacin de datos (Transform)


En el primer campo ledo del fichero tenemos ahora tanto el cdigo como
el nombre de la provincia. Vamos a incluir un nuevo paso a la transformacin
en el que dividiremos esa informacin en dos campos independientes. Para
ello utilizamos el paso Partir campos, dentro del grupo Transformar.
Una vez que hemos arrastrado el paso, y antes de editarlo, tenemos que
enviarle la informacin obtenida en Leer poblaciones. Los flujos de
informacin entre pasos se definen pulsando la tecla shift, y arrastrando el
cursor desde el paso de origen hasta el de destino. Al hacerlo, Spoon
mostrar un men contextual para seleccionar el tipo de envo, que puede
ser el principal o el de error. Elegimos el primero.

Ilustracin 12 Envo de informacin entre pasos

Ahora podemos acceder a las propiedades de Partir campos. Como


nombre le ponemos Separar nombre y codigo. En el desplegable de campo a
partir tenemos los campos que le llegan al paso desde Leer poblaciones,
entre los que elegimos CodigoNombre. El separador tenemos que cambiarlo,
ya que es el espacio, no la coma.
En la tabla de campos vamos a tener que introducir tres filas, una para
cada uno de los campos que vamos a obtener, incluido el separador. Todas
sern de tipo String.

Ilustracin 13 Divisin de los campos cdigo y nombre

Ya tenemos el cdigo y el nombre en campos distintos, por lo que


podemos volver al flujo de datos que obtuvimos del fichero de personas, y
buscar el cdigo de la provincia de cada una de ellas en el que acabamos de
obtener. Para hacer esta bsqueda podemos utilizar el paso Bsqueda en
flujo de datos, dentro de la categora Bsquedas.
Este paso recibir informacin tanto de Leer personas como de Separar
nombre y codigo.

Ilustracin 14 Envo de informacin al paso de bsqueda

Abrimos la vista de propiedades del nuevo paso, y lo nombramos como


Buscar nombre de provincia. En el desplegable Lookup step tenemos que
elegir sobre cul de los dos pasos de los que recibimos informacin haremos
la bsqueda. Para este caso sern los datos de Separar nombre y codigo.
En la siguiente tabla tenemos que indicar por qu campos se hace la
bsqueda. En la primera columna, Campo, tenemos que seleccionar el campo
de los provistos por Leer personas, y en la segunda, Campo Bsqueda, el
campo de los disponibles en Separar nombre y codigo con el que lo vamos a
igualar.
Por ltimos, en la ltima tabla tenemos que indicar de qu campo
obtendremos la informacin que queremos agregar, y cmo se llamar el
nuevo campo que se crear para contenerla. El valor que necesitamos es
Nombre. Le damos tambin un valor por defecto, que se utilizar en aquellos
casos en que la bsqueda no produzca resultados.

Ilustracin 15 Configuracin de la bsqueda en flujo

Carga de datos (Load)


Lo nico que nos queda para completar la definicin del proceso es
guardar la informacin en una base de datos. Para este ejemplo se ha
utilizado Oracle XE 10g, creando un esquema denominado personas, con una
tabla homnima que contiene los campos nombre y provincia, ambos
cadenas de tamao 50.

Ilustracin 16 Definicin de la tabla de personas

Dentro del grupo de pasos Salida encontramos Salida Tabla. Lo


arrastramos sobre la transformacin, y le enviamos los datos de Buscar
nombre de provincia.

Ilustracin 17 Envo de informacin para la escritura en base de datos

Accedemos a la edicin del paso, y le damos el nombre Guardar en base


de datos. En la configuracin de este tipo de pasos lo primero es definir una
conexin a la base de datos que vayamos a utilizar. Pulsamos el botn
Nuevo, junto al campo Conexin. Se abre el dilogo para crear conexiones,
en el que lo primero es seleccionar el tipo de conexin. Como hemos dicho,
este ejemplo se ha hecho con una base de datos Oracle, accediendo por
JDBC. Con cualquier otro SGBD como MySQL o SQL Server se trabajara
exactamente igual (cambiando slo los parmetros necesarios para
configurar la conexin, que son especficos de cada base de datos).
Una vez seleccionado el tipo de conexin, informamos el resto de campos,
tal como se muestra a continuacin.

Ilustracin 18 Configuracin de la conexin a base de datos

Aceptamos el dilogo, y continuamos configurando el paso de insercin de


datos. Tenemos que indicar el esquema y tabla de destino, que es Personas.
Entre las opciones disponibles est la de vaciar la tabla cada vez que se
inserten nuevos datos. Dependiendo de la naturaleza de nuestro proceso
puede que la informacin que vayamos a cargar deba ir incrementndose, o
bien siendo sustituida en cada ejecucin. Vamos a elegir esta ltima opcin,
por lo que seleccionamos el check. Tambin marcamos Specify database
fields, dado que queremos indicar nosotros mismos qu campos de la tabla
van a ser informados.
Accedemos a la pestaa Database fields. Aqu tenemos que indicar qu
campos del flujo se van a cargar en qu campos de la tabla. La forma ms
sencilla de hacerlo es pulsar el botn Enter field mapping. Si hay campos que
tienen el mismo nombre tanto en la tabla como en el flujo de datos de
entrada, la herramienta los asociar automticamente. Para el resto,
tenemos que indicar nosotros cmo se relacionarn.

Ilustracin 19 Mapeo de los datos a insertar

Tras aceptar, la configuracin el paso queda como se muestra.

Ilustracin 20 Configuracin del paso de salida a tabla

Si aceptamos el cuadro de propiedades, habremos terminado de


configurar el proceso ETL.

Lo nico que nos queda es ejecutarlo para ver el resultado. Podemos


hacerlo en el men Action Ejecutar, o directamente con el botn de la barra
representado con una flecha verde. Aparece el cuadro de configuracin de la
ejecucin, que nos permite depurar, enviar parmetros, etc. No vamos a
utilizar ninguna de estas opciones, de modo que pulsamos sobre Ejecutar.

Ilustracin 21 Opciones de ejecucin

En la seccin de Resultados de la ejecucin, en la parte inferior de la


pantalla, podemos ver tanto el log como las mtricas de los pasos
ejecutados.

Ilustracin 22 Resultados de la ejecucin

Para comprobar que todo es correcto, adems de revisar que no hay


errores en el log, inspeccionamos la tabla de la base de datos, y vemos que
se han insertado los valores esperados.

Ilustracin 23 Contenido de la base de datos

También podría gustarte