.01 Introducción a Spoon

Skip to end of metadata
Go to start of metadata

Qué es Spoon?

Spoon es el diseñador gráfico de transformaciones y trabajos del sistema de ETTLs de Pentaho Data Integration (PDI), también conocido como Kettle (acrónimo recursivo: "Kettle Extraction, Transformation, Transportation, and Load Environment ").

Está diseñado para ayudar en los procesos ETTLs, que incluyen la Extracción, Transformación, Transporte y Carga de datos.

Spoon es una Interfaz Gráfica de Usuario (GUI), que permite diseñar transformaciones y trabajos que se pueden ejecutar con las herramientas de Kettle (Pan y Kitchen).
Pan es un motor de transformación de datos que realiza muchas funciones tales como lectura, manipulación, y escritura de datos hacia y desde varias fuentes de datos.
Kitchen es un programa que ejecuta los Trabajos diseñados por Spoon en XML o en un catálogo de base de datos.

Los Trabajos normalmente se planifican en modo batch (por lotes) para ejecutarlos automáticamente en intervalos regulares.
Las Transformaciones y Trabajos se pueden describir usando un archivo XML o se pueden colocar en un catálogo de base de datos de Kettle.
Luego Pan o Kitchen pueden leer los datos para ejecutar los pasos que se describen en la Transformación o ejecutar el Trabajo.

En resumen, PDI facilita la construcción, actualización, y mantenimiento de Data Warehouses.

En esta sección se cubrirán los siguientes temas:

Instalación de Spoon


Para instalar Spoon seguir las siguientes instrucciones:

  1. Instalar Java Runtime Environment (JRE) de Sun Microsystems, versión 1.5 o superior. JRE se puede descargar libre y gratuitamente de http://www.javasoft.com/.
  2. Descargar Kettle, desde la siguiente dirección: http://sourceforge.net/projects/pentaho/files/Data%20Integration/
  3. Descomprimir el archivo recientemente descargado, en un directorio de su elección. Por ejemplo: "/home/datos/programas/".
  4. En ambientes tipo Unix (Solaris, GNU/Linux, MacOS, por ejemplo), se debe hacer que los scripts en shell sean ejecutables. Para ello se debe hacer lo siguiente
cd /home/datos/programas/data-integration
chmod +x *.sh

Iniciar Spoon


Los siguientes scripts permiten iniciar Spoon en diferentes plataformas:

  • spoon.bat: inicia Spoon en la plataforma Window$. En esta plataforma basta con ejecutar el archivo .bat para iniciar Spoon.
  • spoon.sh: inicia Spoon en una plataforma tipo Unix, tal como GNU/Linux, Apple OSX, y Solaris. En este caso debemos ejecutar la siguiente sentencia:
cd /home/datos/programas/data-integration
sh spoon.sh

Para crear un acceso directo en la plataforma Window$, se proporciona un icono. Utilizar "spoon.ico" para establecer el icono correcto. El acceso directo apunta al archivo spoon.bat.

Plataformas soportadas


La GUI de Spoon es soportada en las siguientes plataformas:

  • M$ Window$: todas las plataformas desde Window$ 95, incluyendo Vista.
  • GNU/Linux GTK: en procesadores i386 y x86_64, trabaja mejor en Gnome.
  • OSX de Apple: trabaja en ambas máquinas, PowerPC e Intel.
  • Solaris: utilizando una interface Motif (GTK opcional).
  • AIX: utilizando una interface Motif.
  • HP-UX: utilizando una interface Motif (GTK opcional).
  • FreeBSD: soporte preliminar i386, pero aún no en x86_64.

Problemas conocidos


La siguiente es una lista de problemas conocidos que están asociados con Spoon:

GNU/Linux
Bloqueo ocasional de la JVM corriendo SuSE Linux y KDE. Corriendo bajo Gnome no presenta problemas (detectado en SUSE Linux 10.1 pero versiones anteriores también tienen el mismo problema).

FreeBSD
Problemas con arrastrar y soltar. Utilizar el menú contextual del clic derecho sobre el lienzo como solución.
Consultar las listas de seguimiento en http://jira.pentaho.com para encontrar información actualizada sobre los problemas recientemente descubiertos.

Descripción de la Interfaz de Usuario


La pestaña "Árbol Principal" en el panel izquierdo de Spoon permite ver las conexiones asociadas con los Trabajos y Transformaciones abiertas.

La pestaña "Objetos Principales" en el panel izquierdo de Spoon contiene los pasos disponibles para construir la Transformación (entrada, salida, búsqueda, transformar, uniones, scripting, etc) o el Trabajo (general, mail, scripting, etc), dependiendo el caso.

Opciones de la Línea de Comandos


Las opciones de la línea de comandados que se pueden utilizar al iniciar la aplicación Spoon son las siguientes:

-file=nombreArchivo

La opción anterior ejecuta la transformación especificada (.ktr: Transformación de Kettle).

-logfile=nombreArchivoAcceso

La opción anterior permite especificar la ubicación del archivo de log. Por defecto es la salida estándar.

-level=nivelAcceso

La opción anterior establece el nivel de log para la transformación que se está ejecutando. Los valores posibles son:

Nothing No muestra ninguna salida
Error Solamente muestra los errores
Minimal Usa logging mínimo
Basic Este es el nivel de logging básico por defecto
Detailed Da una salida detallada del logging
Debug Muestra una salida detallada para propósitos de depuración
Rowlevel Logging detallado a nivel de fila. Advertencia: esto genera una pérdida de datos.


-rep=nombreCatalogo

La opción anterior permite conectar a un catálogo.

Nota: Se deben especificar las opciones -user, -pass y -trans/-job que se describirán más adelante. Los detalles del catálogo se cargan desde el archivo "repositories.xml" del directorio local o del directorio de Kettle:

/home/<nombreUsuario>/.kettle/ or C:\Documents and Settings\<nombreUsuario>\.kettle
-user=nombreUsuario

La opción anterior establece el nombre de Usuario con el cual se desea conectar al catálogo:

-pass=password

La opción anterior establece la contraseña utilizada para conectar al catálogo.

-trans=nombreTransformacion

La opción anterior establece la Transformación del catálogo que se desea ejecutar.

-job=nombreTrabajo

La opción anterior establece el Trabajo del catálogo que se desea ejecutar.

Importante:

  • En Window$, Pentaho avisa que se debe utilizar el formato /opción:valor para evitar problemas cuando el Intérprete de comandos del MS-DOS analice la línea de comandos introducida.
  • Los campos en itálica representan los valores que utilizan las opciones.
  • Utilizar comillas simples o comillas dobles si hay espacios en los valores de las opciones; las comillas aseguran que los valores de las opciones permanecen juntos.

Catálogo


Spoon permite almacenar los archivos de las Transformaciones y Trabajos en el sistema de archivos local o en un catálogo de Kettle, que puede ser alojado en cualquier base de datos relacional. Para cargar una Transformación o Trabajo desde un catálogo de base de datos, debe conectarse a ese catálogo.

Al iniciar Spoon se debe definir la conexión al catálogo de base de datos que se desea utilizar, tal como se muestra a continuación, o bien seleccionar la opción "Sin catálogo" para trabajar con el sistema de archivos local:

La información asociada con el catálogo se almacena en "repositories.xml". Este archivo está ubicado en el directorio oculto ".kettle" en el directorio de inicio por defecto.

/home/<nombreUsuario>/.kettle/ or C:\Documents and Settings\<nombreUsuario>\.kettle

Nota: La ruta completa y el nombre del archivo asociado con "repositories.xml" se muestra en la consola de Spoon.
Si no desea ver la página de bienvenida al iniciar Spoon, se debe deshabilitar la opción "Mostrar este diálogo al iniciar" desde la misma página de bienvenida, o al ingresar a Spoon desde el menú superior a través de "Editar -> Opciones...".

Nota: La contraseña por defecto del administrador es "admin". Pentaho recomienda fuertemente cambiar la misma utilizando el Explorador del Catálogo o el menú "Catálogo -> Editar usuario actual".

Ingreso automático al Catálogo


Se puede ingresar de manera automática al catálogo estableciendo las siguientes variables de entorno: KETTLE_REPOSITORY, KETTLE_USER y KETTLE_PASSWORD.

Importante: Debido a que el acceso automático posee un riesgo de seguridad, Pentaho recomienda fuertemente que asegure siempre su computadora para prevenir accesos no autorizados al catálogo.

Licencia


Desde la versión 2.2.0, Kettle fue liberado al dominio público bajo la licencia LGPL. Por favor consultar el Appendix A para ver el texto completo de esta licencia.

Nota: Pentaho Data Integration es referenciado como "Kettle" en el siguiente texto

Copyright (C) 2006 Pentaho Corporation

Kettle es software libre; se puede redistribuir y/o modificar bajo los términos de la GNU Lesser General Public License publicada por la Free Software Foundation; ya sea la versión 2.1 de la Licencia, o (a elección) cualquier versión posterior.

Kettle se distribuye con la esperanza de que será útil, pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Ver la GNU Lesser General Public License para más detalles.

Ud. debería haber recibido una copia de la GNU Lesser General Public License junto con la distribución de Kettle; si no es así, escriba a la Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Definiciones de Transformación


La siguiente tabla contiene una lista de definiciones de Transformación:

Transformación Descripción
Valor Valores que forman parte de una fila y que pueden contener cualquier tipo de datos: cadenas, números de punto flotante, números grandes de precisión ilimitada, enteros, fechas o valores booleanos.
Fila Una fila consiste de 0 o más valores procesados mediante una sola entrada.
Flujo de Entrada Conjunto de filas que ingresan a un paso.
Salto Representación gráfica de uno o más flujos de datos entre 2 pasos; un salto siempre representa el flujo de salida de un paso y el flujo de entrada de otro (la cantidad de flujos es igual a las copias del paso destino, una o más).
Nota Texto descriptivo que se puede agregar a la Transformación.

Definiciones de Trabajo


La siguiente tabla contiene una lista de definiciones de Trabajo:

Trabajo Descripción
Entrada de Trabajo Representa una parte de un trabajo que realiza una tarea específica.
Salto Representación gráfica de uno o más flujos de datos entre 2 pasos; un salto siempre representa el flujo de salida de un paso y el flujo de entrada de otro (la cantidad de flujos es igual a las copias del paso destino, uno o más)
Nota Texto descriptivo que se puede agregar a un Trabajo

Iconos de la Barra de Herramientas


A continuación se detallará la función de los iconos de la barra de tareas de la pantalla principal. Algunos de estos iconos solo están disponibles para las Transformaciones:

Iconos disponibles para Transformaciones:

 
Iconos disponibles para Trabajos:

Icono Descripción Transformación Trabajo
Crea un nuevo Trabajo o Transformación SI SI
Abre una Transformación/Trabajo desde un archivo si no está conectado a un Catálogo o desde el Catálogo si se está conectado a uno. SI SI
Guarda la Transformación/Trabajo en un archivo o en el Catálogo. SI SI
Guarda la Transformación/Trabajo con un nombre diferente y/o en diferente lugar. SI SI
Ejecuta la Transformación/Trabajo actual desde el archivo XML o Catálogo. SI SI
Pone en pausa la ejecución de la actual Transformación. SI NO
Detiene la ejecución de la actual Transformación/Trabajo. SI SI
Vista previa de la Transformación: ejecuta la Transformación actual desde la memoria. Puede obtener una vista previa de las filas generadas por los pasos seleccionados. SI NO
Ejecuta la Transformación en el modo de depuración, lo cual permite detectar problemas y/o errores en la ejecución. SI NO
Repite el procesamiento de una Transformación para una determinada fecha y hora. Esto hará que algunos pasos (entrada archivo de texto y entrada Excel) sólo procesen las filas que no fueron interpretadas correctamente durante la ejecución en una fecha y hora en particular. SI NO
Verifica la Transformación: Spoon ejecuta varias pruebas para cada paso para ver si todo va a funcionar como debería. SI NO
Ejecuta un análisis de impacto: analiza qué impacto tendrá la Transformación sobre las bases de datos utilizadas. SI NO
Genera el SQL necesario para ejecutar la actual Transformación/Trabajo. SI SI
Abre el explorador de bases de datos y permite realizar una vista previa de los datos, ejecutar las consultas SQL, generar DDL (Lenguaje de Definición de Datos), etc. SI SI
/ Muestra u oculta el panel de resultados de la ejecución de la Transformación/Trabajo. SI SI
Representa el tamaño de visualización (en porcentaje) del área de trabajo. SI SI

Opciones de Kettle


Las opciones de Kettle permiten personalizar las propiedades asociadas con el comportamiento y apariencia de la GUI. Por ejemplo, se incluyen opciones de inicio para mostrar o no los consejos y la página de bienvenida de Kettle, y también se incluyen opciones de interfaz de usuari@, como fuentes y colores.
Para acceder a las opciones de este cuadro de diálogo, se debe seleccionar en la barra de menú: "Editar -> Opciones..."

Al realizar esto, se abrirá una nueva ventana que posee dos pestañas: General y Apariencia.

  • Pestaña General:
Característica Descripción
Máximo nivel de "deshacer" Establece la cantidad máxima de pasos que se pueden deshacer (o rehacer) .
Número de líneas por defecto en el diálogo de vista previa Permite cambiar la cantidad de líneas por defecto solicitadas a un paso durante transformaciones previas.
Máximo número de líneas en la ventana de logueo Especifica el límite máximo de filas a mostrar en la ventana de acceso.
Max number of lines in the log history view Especifica el límite máximo de filas a mostrar en la vista de log.
¿Mostrar consejos al iniciar? Establece la presentación de sugerencias al inicio.
¿Mostrar página de bienvenida al iniciar? Controla si se muestra o no la página de bienvenida al iniciar Spoon.
¿Utilizar caché de base de datos? Spoon guarda en la memoria caché la información almacenada en las base de datos origen y destino. En algunos casos, el almacenamiento en caché provoca resultados incorrectos cuando se están haciendo cambios en la base de datos. Para evitar errores se puede desactivar por completo la memoria caché en lugar de borrarla cada vez.

Nota: Spoon borra automáticamente la memoria caché de base de datos al ejecutar sentencias DDL para una conexión de base de datos; sin embargo, al utilizar herramientas de terceros, puede ser necesaria la limpieza manual del caché de base de datos.

¿Abrir el último archivo al iniciar? Carga automáticamente la última Transformación/Trabajo utilizada (abierta o guardada) desde XML o Catálogo.
¿Auto guardar archivos cambiados? Guarda automáticamente una Transformación/Trabajo modificada antes de ejecutarla.
¿Sólo mostrar el archivo activo en el árbol principal? Reduce el número de elementos de Transformación/Trabajo en el árbol principal de la izquierda, mostrando solamente el archivo activo.
¿Sólo guardar conexiones utilizadas en el XML? Limita la exportación XML de una transformación a las conexiones utilizadas en esa transformación. Esto es útil cuando se intercambia transformaciones de ejemplo para evitar definir todas las conexiones a incluir.
¿Preguntar si reemplazar conexiones existentes al abrir/importar? Pide permiso antes de sustituir las conexiones de base de datos durante la importación.
¿Reemplazar las conexiones existentes al abrir/importar? Esta es la acción que se lleva a cavo cuando no se muestra ningún cuadro de diálogo. (ver la opción anterior)
¿Mostrar diálogo "Guardar"? Le permite desactivar los cuadros de diálogo de confirmación que se reciben cuando ha cambiado una Transformación/Trabajo.
¿Dividir saltos automáticamente? Desactiva la confirmación de los cuadros de diálogo que se obtienen cuando se desea dividir un salto (véase también el tema "Dividir un Salto")
¿Mostrar el diálogo "copiar o distribuir"? Desactiva el mensaje de advertencia que aparece cuando se enlaza un paso a varias salidas. Este mensaje de aviso describe las dos opciones para el manejo de varias salidas:
1.Distribuir filas: los pasos destino reciben las filas por turno (round robin).
2.Copiar filas: todos las filas se envían a todos los destinos.
¿Mostrar diálogo de repositorio al iniciar? Controla si se muestra o no el diálogo de Catálogo al iniciar.
¿Preguntar al usuario al salir? Controla si se muestra o no el diálogo de confirmación cuando el usuario elige salir de la aplicación.
Limpiar parámetros personalizados (pasos/complementos) Borra todos los parámetros y banderas que se establecieron en complementos o diálogos de pasos.
Auto-collapse palette tree? Abre automáticamente todos los nodos del árbol.
¿Mostrar cuadros de ayuda? Esta opción controla si se muestra o no la herramienta para mostrar sugerencias en los botones de la barra de herramientas principal.
Show help tool tips? Activa/desactiva la opción para obtener ayuda adicional al situarse con el puntero sobre alguna opción.
Check version on startup? Chequea al iniciar, si existe una nueva versión disponible.
  • Pestaña Apariencia:
Característica Descripción
Fuente de ancho variable La fuente que se utiliza en los cuadros de diálogo, los árboles, campos de entrada, etc.
Fuente en el espacio de trabajo La fuente que se utiliza en la vista gráfica.
Fuente para notas La fuente a utilizar en las notas que se muestran en la vista gráfica.
Color de fondo Establece el color de fondo en Spoon. También afecta a todos los diálogos.
Color de fondo del espacio de trabajo Establece el color de fondo en la vista gráfica de Spoon
Color de solapas El color que se utiliza para indicar las pestañas activas/seleccionadas.
Tamaño de íconos en espacio de trabajo Afecta el tamaño de los íconos en la vista gráfica. El tamaño original de un ícono es de 32x32 pixeles. Los mejores resultados (gráficamente) se consiguen con tamaños de 16, 24, 32, 48, 64 y otros múltiplos de 16.
Ancho de línea en espacio de trabajo Afecta al ancho de línea de los saltos en la vista gráfica y los bordes alrededor de los pasos.
Tamaño de la sombra en el espacio de trabajo Si este tamaño es mayor que 0, en el lienzo se dibuja una sombra a pasos, saltos, y notas, haciendo parecer que la transformación flota sobre el lienzo.
Porcentaje medio del diálogo Por defecto, un parámetro se dibuja al 35% del ancho del diálogo, contado desde la izquierda, pero este valor puede modificarse desde esta opción. La correcta configuración de este porcentaje puede ser útil en los casos en donde se utiliza excepcionalmente fuentes grandes.
Grid size Permite aumentar o disminuir la posibilidad de ubicación de los pasos en el liezo de trabajo. Un valor alto como 50, permite alinear los pasos más fácilmente.
¿Anti alias de lienzo? Algunas plataformas como Window$, OSX y GNU/Linux suportan anti-aliasing mediante GDI, Carbon o Cairo. Tildar esta opción para habilitar líneas e íconos suaves en la vista gráfica. Si se habilita esta opción y después no trabaja el entorno gráfico, cambiar el valor de la opción "EnableAntiAliasing" a "N" en el archivo .spoonrc, que se encuentra en: home/<nombreUsuario>/.kettle/ ó C:\Documents and Settings\<nombreUsuario>\ .kettle\
¿Utilizar apariencia de SO? Tildando esta opción en Window$ permite utilizar la configuración por defecto del sistema para Fuentes y colores en Spoon.
Mostrar gráficos de marca Habilitando esta opción se dibujarán gráficos de marca de PDI en el lienzo y en el lado izquierdo de la "barra expandir".
Lenguaje Preferido Aquí se puede especificar la configuración del lenguaje que se utilizará. Si un texto no se ha traducido, Kettle tomará la configuración por defecto.
Lenguaje Alternativo Debido a que el idioma original en que se escribió Kettle es el inglés, es mejor configurar esta opción seleccionando English(US).

Búsqueda de Metadatos


Se accede a esta característica seleccionando en la barra de menú: Editar -> Buscar Meta Información.

Esta opción buscará la cadena especificada en el campo Filtro, en cualquier campo disponible, conector o nota de todas las transformaciones y trabajos cargados. La búsqueda de metadatos devuelve un conjunto detallado de resultados que muestra la ubicación de todas las coincidencias encontradas.

Configurar Variables de Entorno


Para configurar las variables de entorno que se utilizarán, se debe seleccionar en la barra de menú: Editar -> Establecer Variables de Entorno.

En este caso se crearon dos variables de entorno, con sus respectivos valores, que serán utilizados en un paso de envio de mail.
La forma de utilizar las variables de entorno es la siguiente:

Es decir, solo se debe colocar en el campo que deseemos:

${nombreVariable}

Las valores asociados a las variables de entorno que han sido definidas a través de "Editar -> Establecer Variables de Entorno" se perderán al reiniciar Spoon. Para que esto no suceda y por cuestiones de integridad, es buena práctica configurar las variables de entorno en el archivo kettle.properties, que se encuentra en:

  • GNU/Linux: home/<nombreUsuario>/.kettle/
  • Window$: C:\Documents and Settings\<nombreUsuario>\ .kettle\

Para crear las variables en este archivo, solo basta con hacer lo siguiente:

nombreVariable = valor

En este caso sería simplemente añadir al final del archivo las siguientes líneas

mail.puerto.gmail = 465
mail.server.gmail = smtp.gmail.com

En todo momento se pueden ver los valores que poseen las variables de entorno, a través de la siguiente opción: Editar -> Mostrar Variables de Entorno.
Tal y como puede observarse estas variables son utilizadas en la sesión del usuari@ actual.

Las variables de entorno, permiten centralizar y reutilizar valores, que se irán repitiendo en las diferentes Transformaciones y Trabajos, por ejemplo: nombre de bases de datos, puertos, url de conexión, etc.

Ejecución del registro Log


Si se configura un Trabajo o Transformación para guardar la información de log en una tabla de una base de datos, se puede ver la información de log de ejecuciones previas al hacer clic derecho en el Trabajo o Transformación en el Árbol Principal y seleccionar 'Abrir vista de registro'.

Al realizar esto, en la parte inferior de la pantalla aparecerá una vista similar a la siguiente:

Nota: Por defecto, el registro de log de un trabajo o transformación también se abre cada vez que se ejecuta el archivo.

Repetir


Esta opción puede accederse a través de la barra de menú, seleccionando: Transformación -> Repetir
o seleccionando el icono de la barra de herramientas.

La característica Repetir permite volver a ejecutar una Transformación que ha fallado. Repetir se implementa funcionalmente para "Entrada Archivo de Texto" y "Salida Excel".

Permite enviar los archivos que contenían errores de nuevo a la fuente y que se corrijan los datos.

Si un archivo .line está presente, sólo se procesan las líneas que no fallaron durante la reproducción. La característica Repetir utiliza la fecha del archivo .line para que coincida con la fecha ingresada en Repetir.

Generar mapa contra este paso destino


En casos donde se tiene una tabla destino fija, se pueden mapear los campos del flujo de datos actual a los correspondientes campos de la tabla destino.

Esto puede hacerse desde una Transformación seleccionando en el paso "Selecciona/Renombra Valores" la opción "Editar Mapeo":

Pero también puede hacerse de manera más directa a través de la opción "Generar mapa contra este paso destino". A continuación se expondrá un ejemplo que permitirá apreciar cómo se utiliza esta opción.

Ejemplo:

El siguiente es un ejemplo de una Transformación simple en la que se busca generar el mapeo de los correspondientes flujos de datos a una tabla de salida:
*1) Hacer clic derecho sobre el paso Salida Tabla y seleccionar "Generar mapa contra este paso destino":

*2) Agregar todos los mapeos necesarios usando las herramientas de "Editar Mapeo" mostradas anteriormente y hacer clic en OK. Ahora verá que se agrega automáticamente al lienzo un nuevo paso "Selecciona/Renombra Valores" con el nombre "Mapeo Salida Tabla":

*3) Colocar el nuevo paso entre los dos pasos iniciales y configurar los saltos de la siguiente manera:

Como se puede observar, esta opción permite realizar de forma sencilla y gráficamente las correspondencias entre el flujo de datos de entrada y salida.

Modo seguro


Es recomendable utilizar el "Modo seguro" cuando se mezclan filas de muchas fuentes para asegurarse de que todas las filas tengan el mismo diseño en todas las condiciones.
La opción "Modo seguro" está disponible en la ventana que se despliega al ejecutar una Transformación/Trabajo:
 
Cuando se ejecuta en modo seguro, la transformación verifica cada fila que pasa y asegura que todos los diseños sean idénticos. Si una fila no tiene el mismo diseño que la que la primera fila, se genera e informa un error.

Esta opción hará entonces que la ejecución de la Transformación/Trabajo sea más lenta, por lo cual solo debe utilizarse para pruebas y detección de errores.

Nota: Esta opción también está disponible en Pan.

Página de bienvenida


La página de Bienvenida se muestra al iniciar Spoon 3.2; proporciona enlaces a información adicional sobre PDI:

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.