Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Data Integration
Junio 2022
Pentaho Data Integration (PDI) proporciona capacidades de
¿Qué es extracción, transformación y carga (ETL) que facilitan el proceso de
captura, limpieza y almacenamiento de datos utilizando un formato
Pentaho uniforme y consistente que sea accesible y relevante para los
usuarios finales y las tecnologías de lote.
Data
Integration
(PDI)?
¿Qué es Pentaho Data Integration (PDI)?
Pentaho Data Integration (PDI), cuyo nombre en clave es Kettle, es una de las herramientas o
componentes de Pentaho Suite que permite que se utilicen técnicas ETL, es decir, poder implementar
procesos de extracción, transformación y carga de datos.
Kettle, además, ofrece datos analíticos muy precisos, eliminando las complejidades involucradas en la
codificación al proporcionar bibliotecas en profundidad para el mismo.
Pues que las empresas van a ahorrarse muchísimo tiempo y esfuerzo en hacer esto de forma manual, lo
cual es frecuentemente difícil.
¿Cuáles son los productos que nos ofrece
Pentaho?
Pentaho nos ofrece una serie de útiles productos como son los siguientes:
Pentaho Reporting: Es un motor de presentación capaz de generar informes programáticos sobre la base de
un archivo de definición XML.
Pentaho Dashboard: Es una plataforma integrada para proporcionar información sobre sus datos, donde se
pueden ver informes, gráficos, etc.
Pentaho Data Mining: Es una suite de software que usa estrategias de aprendizaje de máquina, automático
y minería de datos. Cuenta con las herramientas necesarias para apoyar las tareas de análisis descriptivo.
Pentaho para Apache Hadoop: Es un conector de bajo nivel para facilitar el acceso a grandes volúmenes
manejados en el proyecto Apache Hadoop.
Pentaho Analysis Services: Es compatible con el MDX, y el lenguaje de conducta XML para el análisis y
especificaciones de la interfaz.
¿Cuáles son los productos que nos ofrece
Pentaho?
Spoon
Pan
Kitchen
Guía Demo 1
• Browse
• Get Fields
• Content information
Lectura y escritura de archivos
Guía Demo 1
Introducción
En esta guía demo, crearemos una transformación que lee varios archivos de texto. A continuación, usamos el paso ‘Get
System Info’ para añadir la fecha/hora del sistema al flujo de la ETL. Por último, usamos un paso " Text file output " para
generar la transmisión a un archivo de texto delimitado.
Objetivos
• Configurar un paso “Text file input” para leer varios archivos de texto.
• Agregar datos relacionados con el sistema y el entorno a la secuencia mediante el paso “Get System Info”
• Configurar el paso “Text file output” para crear un único archivo de salida delimitado (CSV).
Pasos a utilizar
• Text file input
• Get System Info
• Text file output
Lectura y escritura de archivos
Objetivos
• Editar el archivo kettle.properties.
• Agregar variables y valores en el archivo kettle.properties.
• Configurar el paso “CSV file input” utilizando una variable para definir la carpeta del archivo de entrada.
• Configurar un paso “CSV file input” utilizando una variable para definir el archivo de salida Carpeta.
Pasos Usados
• CSV file input
• Text file outpu
Parámetros y Variables
VARIABLES
Las variables son globales y tienen un alcance que generalmente está dentro del entorno ( Maquina virtual) o
dentro de un Job principal. Las variables relacionadas con el proyecto y sus valores se pueden definir en el
archivo kettle.properties
Para definir una nueva variables se puede utilizar cualquiera siguientes técnicas.
Parámetros y Variables
PARÁMETROS
Los parámetros son variables locales cuyo alcance está solo dentro del trabajo o transformación en el que se definen.
Objetivos
• Editar el archivo kettle.properties.
• Agregar variables y valores en el archivo kettle.properties.
• Configurar el paso “CSV file input” utilizando una variable para definir la carpeta del archivo de entrada.
• Configurar un paso “CSV file input” utilizando una variable para definir el archivo de salida Carpeta.
Pasos Usados
• CSV file input
• Text file outpu
Lectura y escritura de archivos
Guía Demo 2
Introducción
En esta guía demo, agregamos dos variables al kettle.properties para las carpetas que contienen los archivos de
entrada y salida. Entonces podemos utilizar esas variables en lugar de escribir las rutas.
Objetivos
• Editar el archivo kettle.properties.
• Agregar variables y valores en el archivo kettle.properties.
• Configurar el paso “CSV file input” utilizando una variable para definir la carpeta del archivo de entrada.
• Configurar un paso “CSV file input” utilizando una variable para definir el archivo de salida Carpeta.
Pasos Usados
• CSV file input
• Text file outpu
Lectura y escritura de archivos
Ejercicio 1
En este ejercicio, creará una transformación que lee un archivo CSV llamado Order_File (el cual contenga datos
personales de al menos 5 personas). Entonces, enviará datos entrantes para personas, para lo cual se debe generar
parámetros en el kettle.properties, para especificar la ubicaciones de carpetas de entrada y salida de archivos.
Objetivos
• Crear y utilizar parámetros de transformación para definir ubicaciones para las carpetas de entrada y salida.
• Configurar un paso “CSV file input” utilizando una variable para definir la ubicación del archivo de entrada.
• Configurar un paso “Text file output” utilizando una variable para definir la ubicación del archivo de salida.
• Configurar un paso “Dummy (do nothing)” para todos los datos que no coincidan con un caso específico de Valor.
Lectura y escritura de archivos
Modelo
Pasos Utilizados
• CSV file input
• Switch / Case
• Text file output
• Dummy (do nothing)
Trabajando con bases de datos
• Utiliza la pestaña Generic del cuadro de diálogo de conexión para utilizar controladores no listados
• Permite conexiones a bases de datos no enumeradas
Utilice una conexión JNDI para conectarse a un origen de datos definido en un servidor de aplicaciones como
JBoss o WebSphere.
Los métodos de acceso específicos del complemento son proporcionados por un controlador de base de datos
específico (como SAP R/3 o PALO)
Trabajando con bases de datos
Limpieza de Datos
STEP COPIES
El rendimiento de ejecución de una transformación se puede mejorar mediante el uso de una función llamada
Step copies. Las copias de pasos permiten la creación de múltiples copias (instancias) de un paso que se ejecuta
en su propio hilo en tiempo de ejecución. Esta lección cubre pasos de copias y cómo usarlos.
Flujo de datos y Lookups
Distribución en Paralelo
Lookups (búsquedas)
La búsqueda es la función PDI que accede a un origen de datos para encontrar valores con criterios de
coincidencia definidos (un valor de clave).
La categoría de búsqueda en Spoon contiene muchos pasos disponibles para buscar datos.
Todos estos pasos suponen un flujo entrante de registros que luego se comparan registro por registro con una fuente
de búsqueda. Esto produce una secuencia de registro saliente con uno o más campos buscados añadidos.
Flujo de datos y Lookups
Lookups (búsquedas)
El paso de Database Lookup le permite buscar valores en la tabla de la base de datos. Los valores de búsqueda se
agregan como nuevos campos en la secuencia. Si desea realizar una búsqueda simple utilizando una clave primaria,
una clave externa o una ID, este paso es el más fácil de usar y ofrece una buena oportunidad de obtener el mejor
rendimiento posible
Desnormalización
El paso de búsqueda ‘Stream Lookup’ le permite buscar datos utilizando información proveniente de otros
pasos en la transformación. Los datos que provienen del paso Fuente se leen primero en la memoria y luego se
usan para buscar datos de la transmisión principal.
En los procesos ETL, los datos se combinan frecuentemente con otros datos. En muchos casos, esto se hace
con dos flujos y con filas coincidentes entre ellos en las claves especificadas. Esto es útil para todo tipo de
combinaciones y otros escenarios.
Flujo de datos y Lookups
Paso: Merge join
Los datos que entran en el paso deben ordenarse por las claves que ha especificado en la configuración de los
pasos
Flujo de datos y Lookups
• Inner
• Left outer
• Right Outer
• Full Outer
Flujo de datos y Lookups
• Actualiza los datos del producto en una tabla basada en los cambios del producto almacenados en un
archivo de texto.
• El paso Merge Rows (Diff), se utiliza para determinar qué filas son nuevas, eliminadas, cambiadas o
idénticas
• Sincronizar después de combinar facilitará la inserción, actualización y eliminación reales de los registros en
la tabla
Cálculos
Paso Group by
Este paso agrupa filas de una fuente, en función de un campo específico o una colección de campos. Se
genera una nueva fila para cada grupo. También puede generar uno o más valores agregados para los
grupos. Los usos comunes son calcular el promedio de ventas por producto y contar el número de un artículo
que tiene en stock.
Guía Demo 3
Introducción
En esta demostración guiada, crearemos una transformación que lea los datos del producto de la base de datos,
ordena los datos por id de producto de manera descendente y agrupara por el nombre para contener la cantidad de
productos que pertenecen a un nombre de producto.
Objetivos
• Configurar el paso “Group by" para resumir los datos en función de un campo en el flujo
Pasos Usados
• Table input
• Sort rows
• Group by
Introducción a Jobs
ORQUESTACIÓN DE JOB
Después de crear procesos ETL, querrá asegurarse de que se ejecuten con éxito, en el orden correcto, registren
mensajes y notifiquen a las personas los resultados. Los Jobs son los modelos de flujo de trabajo utilizados para
hacer esto. Los Jobs coordinan los recursos, la ejecución y las dependencias de las actividades de ETL.
Identificar tareas que un Job debe realizar en función de los procesos que ejecutará
Crear un Job que busque recursos, inicie sesión en un archivo y ejecute una transformación
Introducción a Jobs
Job de Entrada
• Los Job entrada son los bloques de construcción principales de un job. En una
transformación, estas piezas individuales se denominan pasos. Los Jobs no tienen
pasos, tienen job de entrada. Los Jobs de entrada proporcionan una amplia gama
de funciones que van desde la ejecución de transformaciones hasta la obtención
de archivos desde un servidor web. cada job debe comenzar con la entrada Start
Job.
• Tenga en cuenta que aunque los trabajos no tienen pasos, muchas personas usan
los términos entrada de trabajo y paso de manera intercambiable
Introducción a Jobs
Ejemplo de Job
• Start
• Comprueba la existencia de tabla
• Si la tabla existe, la tabla se trunca
• Si la tabla no existe, se crea la tabla
• Se ejecuta una transformación que llena una tabla.
• Se ejecuta una transformación que actualiza la tabla
• Nota; Los nombres de las entradas de trabajo aquí se utilizan para facilitar la lectura. Debe
usar las mejores prácticas de nomenclatura en trabajos reales.
Introducción a Jobs
Creando Job
• En general, se debe evitar el bucle en los Jobs. Sin embargo, hay veces que se requieren. Si
diseña un job que tiene un bucle, debe incluir un límite tal que después de N bucles, el job se
cancele. Esto evitaría la posibilidad de obtener el error OutOfMemory. La entrada de trabajo
de JavaScript es una buena opción para implementar este tipo de lógica de límite de bucle
Introducción a Jobs
Las entradas de trabajo se ejecutan utilizando un algoritmo de retroceso. No se ejecutan (por defecto) en paralelo.
El orden de ejecución de la entrada del trabajo depende del orden en que se crearon en el trabajo.
La ruta en sí está definida por el resultado real (éxito o fracaso) de las entradas de trabajo.
Siempre se sigue una ruta hasta llegar a su final antes de considerar la siguiente ruta posible
Ejecución
Orden de Dependencias
paralela del
ejecución del del Job de
Job de
Job entrada entrada
entrada
Introducción a Jobs
Orden de Ejecución de Job de entrada
1. Primero, la entrada de START busca todas las siguientes entradas de trabajo y encuentra A y C. (A se creó
primero)
2. A se ejecuta
3. A luego busca todas las siguientes entradas de trabajo y encuentra B
4. B se ejecuta
5. B busca todas las siguientes entradas de trabajo pero aparece en blanco porque ha alcanzado el de esa ruta.
6. A no tiene más entradas de trabajo para ejecutar
7. START tiene una entrada de trabajo más para ejecutar C
8. C se ejecuta
9. C busca todas las siguientes entradas de trabajo pero aparece en blanco
10. START no tiene más entradas de trabajo para ejecutar
11. El trabajo termina
Introducción a Jobs
Ejecución paralela Job de entrada
Se puede configurar un Job de entrada para ejecutar las siguientes entradas en paralelo, ejecutándose en
subprocesos separados.
START A C B C
En este ejemplo, la entrada de trabajo de transformación 1 se ejecuta si existe el objeto buscado o si el archivo no
existe.
Puede alternar el salto entre las tres condiciones haciendo clic en el icono del salto
Introducción a Jobs
Verdadero
Siga el salto cuando el resultado de la entrada de trabajo anterior sea exitoso.
Especifica que la siguiente entrada de trabajo se ejecutará solo cuando el resultado de la entrada de trabajo de origen
sea verdadero; Esto significa una ejecución exitosa, como la tabla de archivos encontrados sin errores, etc.
En este ejemplo, la entrada de trabajo de transformación 1 se ejecuta solo si el archivo que se busca existe
Puede alternar el salto entre las tres condiciones haciendo clic en el icono del salto.
Introducción a Jobs
Falso
Siga el salto cuando el resultado de la entrada de trabajo anterior sea un error (falso)
Especifica que la siguiente entrada de trabajo solo se ejecutará cuando el resultado de la entrada de trabajo de origen
sea falso; lo que significa ejecución fallida, archivo no encontrado, error de tabla no encontrada, etc.
En este ejemplo, la entrada de trabajo de transformación 1 se ejecuta solo si el archivo que se busca no existe.
Puede alternar el salto entre las tres condiciones haciendo clic en el icono del salto.
Introducción a Jobs
Categoría Condiciones
Extrae información de carpetas, archivos, columnas y tablas
Introducción a Jobs
Uso del Kitchen para ejecutar Job vía línea de comando
Se puede llamar a un job desde un archivo .bat /.sh con parámetros.
• Por ejemplo:
– kitchen.bat /file:"directorio-parajob.kjb"
Atención: NO se debe marcar "Copiar resultados anteriores en argumentos". De lo contrario, los parámetros
no se transfieren a la transformación.
JVM y Logs - Seguimiento a los procesos
Los logs contienen información resumida sobre el job o la ejecución de la transformación como:
Los logs también contienen información detallada sobre el trabajo, la ejecución de la transformación.
• Excepciones
• Errores
• Información de depuración
JVM y Logs - Seguimiento a los procesos
Fiabilidad
Logs de Entradas
• “Log" tradicional
• Enfoque basado en archivos
• Verboso
• Resultados resumidos
• Enfoque basado en RDBMS
• Conciso y estructurado
JVM y Logs - Seguimiento a los procesos
Logs de Entradas.
Niveles:
• Nada
• Error
• Mínimo
• Básica
• Detallada
• Depuración
• Nivel de fila
JVM y Logs - Seguimiento a los procesos
Error:
Mínimo:
Se basa en el error
Escribe entradas de registro mínimas
JVM y Logs - Seguimiento a los procesos
Básica:
Construye en el mínimo
Logs de información sobre pasos individuales
JVM y Logs - Seguimiento a los procesos
Log de Entradas: Detalladas
Detallada:
Depuración:
Nivel de fila:
• Compilaciones en depurar
• Mas Detallado: descarga los valores de fila a medida que pasan a través de los operadores
• Es útil cuando el valor de datos provoca OraException sin ningún mensaje de error útil
Mejores prácticas y/o Sugerencias
Convenciones de nombres
Nombrar Jobs de entrada y pasos con una sintaxis conocida estándar ayudará a todos los usuarios que usan y
desarrollan con PDI a localizar lo que están buscando y comprender su propósito. El uso coherente de un estándar
también reduce significativamente el tiempo de solución de problemas porque es fácil saber qué es un objeto al leer
registros
Transformation Naming
Job Naming Conventions Conventions
Mejores prácticas y/o Sugerencias
Job Naming Conventions
Nombrar los Jobs y pasos con una sintaxis conocida estándar ayudará a todos los usuarios que usan y desarrollan
con PDI a localizar lo que están buscando y comprender su propósito. El uso coherente de un estándar también
reduce significativamente el tiempo de solución de problemas porque es fácil saber qué es un objeto al leer registros.
Decida una convención de nomenclatura que tenga sentido para Utilice un prefijo estándar para las entradas y asígneles un
su organización al nombrar trabajos para ayudar a distinguirlos nombre con descripciones de las operaciones o la intención de la
de otros objetos y su propósito. A continuación se muestra una entrada.
sintaxis sugerida y ejemplos.
Nombrar las transformaciones y pasos con una sintaxis conocida estándar ayudará a todos los usuarios que usan y
desarrollan con PDI a localizar lo que están buscando y comprender su propósito. El uso coherente de un estándar
también reduce significativamente el tiempo de solución de problemas porque es fácil saber qué es un objeto al leer
registros.
Use una convención de nomenclatura que tenga sentido para su Syntax <abbreviation of step name>-<short description>
organización al nombrar transformaciones para ayudar a
distinguirlos de otros objetos y su propósito. A continuación se Nota: No puede elegir un carácter que no sea un guión.
muestra una sintaxis sugerida y un ejemplo.
Pentaho Data Integration (PDI) admite ODBC y JDBC para conectividad. Tenga en cuenta que ODBC suele ser más lento
que JDBC, y Pentaho no es compatible con ODBC para clientes con suscripción.
PDI proporciona dos formas de conectarse a una base de datos a través de JDBC.
• Controlador JDBC específico de Vertica. Utilice el conector JDBC específico de Vertica para sus trabajos ETL. Al crear una
nueva conexión a Vertica, asegúrese de seleccionar el conector que coincida con su base de datos.
• Controlador genérico JDBC
Los archivos JDBC de la base de datos se encuentran en las siguientes carpetas de su instalación PDI:
• Para instalaciones de clientes (Spoon, Pan, Kitchen, Carte): Data integration/ lib
• Para instalaciones de servidor: servidor de integración de datos / tomcat / lib
Si el cliente está instalado en la misma máquina que el servidor, debe copiar el archivo jar Vertica JDBC en ambas carpetas.
Mejores
prácticas y/o
Sugerencias
C:\<install_dir>\data-integration\lib\
Mejores prácticas y/o Sugerencias
Para evitar crear demasiados o muy pocos contenedores ROS, siga estas recomendaciones: