EL PROCESO DE ETL
4. ANEXOS
4.1 CREACIÓN DE UN DASHBOARD
En el anterior tema hemos explicado qué es un dashboard, de qué trata, cuáles son sus
beneficios, cuál es su función y hemos visto cómo crear un dashboard con Pentaho.
Ahora, en este apartado vamos a introducir unos enlaces en los que se explica cómo se
crea un dashboard en Google Analytics y en Excel 2010.
4.1.1 Creación de un dashboard en Google Analytics
Cómo crear un dashboard en Google Analytics y no morir en el intento. David Pinazo,
marco 2015.
Enlace: [Link]
analytics/
En este enlace nos encontramos con el paso a paso, explicado de manera muy clara,
para llevar a cabo la creación de un dashboard en Google Analytics. En este se explica
o trata la configuración de unos widgets básicos e imprescindibles para medir el
resultado de las visitas que obtenemos, el comportamiento o los intereses de nuestros
lectores. También podremos descubrir, por ejemplo, cuáles de nuestros lectores ya los
tenemos fidelizados y qué fuentes dirigen tráfico a nuestra página web.
4.1.2 Creación de un dashboard en Excel 2010
Cómo hacer un dashboard en Excel 2010. David Piñeiro.
Enlace: [Link]
En este enlace tenemos el paso a paso para llevar a cabo la creación de un dashboard
básico en Excel 2010. En este se usa como ejemplo las ventas que se obtienen en una
tienda de mascotas, analizando los ingresos de la compañía, las mascotas vendidas y
qué vende cada vendedor y por lo tanto, lo que ingresa cada uno.
Y
Página 73
EL PROCESO DE ETL
4.2 EJECUCIÓN DE TRANSFORMACIONES Y TRABAJOS
Anteriormente, en los apartados correspondientes, hemos tratado de manera teórica
las Transformaciones y los Trabajos y también hemos compartido algún vídeo y algún
ejemplo. Para finalizar, aquí vamos a ver cómo tratar con estos componentes o
herramientas y como realizar su ejecución paso a paso.
4.2.1 Guía de componentes Pentaho
Guía de componentes de Pentaho Data Integration. Grupo ETL.
[Link]
[Link]
Documento: Guía de componentes Pentaho. Data integration.
En este enlace nos encontramos una guía en la que se explica todo detalladamente y
con el soporte de imágenes en cada paso, cómo realizar la ejecución de
transformaciones y trabajos o Jobs y el funcionamiento de cada componente en
Pentaho Data Integration.
4.2.2 Ejecutar una Transformación o Trabajo
Bernabeu R. Darío, 2010. Ejecutar una Transformación o Trabajo.
[Link]
En este enlace encontramos el paso a paso, muy bien explicado y acompañado de
imágenes, para llevar a cabo la ejecución de una Transformación o Trabajo. Nos explica
cómo realizarla, las opciones de ejecución, la vista previa de esta ejecución, la
configuración remota y el clustering, entre otros.
4.2.3 Transformación gráfica ETL con Spoon
Transformación gráfica ETL con Spoon- un componente de Pentaho Data Integration.
[Link]
Y
Página 74
EL PROCESO DE ETL
En este enlace tenemos un ejemplo de explicación para realizar una transformación
simple usando la aplicación Spoon de Pentaho Data Integration (Kettle). Paso a paso
nos indica cómo llevar a cabo esta ejecución de la transformación.
4.2.4 ETL: Ejemplo práctico de transformación de datos usando Kettle
John Ward
Enlace: [Link]
He escrito sobre Kettle antes. Personalmente creo que es una gran herramienta, y es
fácil de ver que esto ha sido escrito por alguien que trabaja con molestos formatos de
datos constantemente. Bueno, Kettle ahora se conoce como el Proyecto de Integración
de Datos de Pentaho, y ahora está en la versión 3. Para ser breves, me referiré a él
como Kettle de aquí en adelante. Por supuesto, nada de esto cambia la funcionalidad
de la herramienta. En este artículo voy a mostrar una aplicación práctica de cómo he
estado usando Kettle para ayudar en la generación y transformación de molestos
formatos de datos.
Recientemente tuve que trabajar con un feed de un proveedor de entretenimiento que
distribuye DVD, CD de música y demás. Para las tiendas que usan estos archivos, se les
proporciona un conjunto bastante confuso de archivos planos, delimitados por
tabuladores, en un formato muy poco user friendly. Dado que la tienda para la que
trabajaba tenía un formato predefinido y deseaban incluir archivos de ventas a su
motor de búsqueda y navegación, necesitábamos transformar estos archivos a ese
formato. Aquí es donde entra en acción Kettle.
El primer archivo que necesito para tratar con ellos es su archivo de Productos. El
archivo contiene aproximadamente 28 campos con varios números que no tienen
ningún sentido para mí. Los únicos campos de los que debo preocuparme son la
identificación del producto, el nombre del producto, la identificación interna (utilizada
para mapear con otros archivos), una identificación de categoría, el artista, el precio y
la fecha de disponibilidad. Los otros campos los puedo ignorar. Como estoy tratando
Y
Página 75
EL PROCESO DE ETL
con categorías (categories), también necesito el archivo de categoría (Category). Las
categorías se manejarán de manera especial. No necesito esto en mi archivo, sino en
un archivo separado, o más bien en archivos, que se adjuntarán solo una vez a un
conjunto de archivos diferente. Y el archivo final que necesito de su conjunto es su
archivo de Atributos (Attributes), que contendrá información sobre productos tales
como: si el producto es de pantalla ancha, doblado, subtitulado, etc. Estos se manejan
de una manera especial en el back-end de búsqueda, así que solo necesito
proporcionarlos.
Figura 1. Modelo conceptual de datos
Lo que tengo que hacer es transformar estos datos en el formato de la Figura 2.
Y
Página 76
EL PROCESO DE ETL
Figura 2. El formato de alimentación de datos
El campo del artista (Artist) irá en el campo de búsqueda 1, y los dos primeros
atributos que encuentre irán en los campos de búsqueda 2 y 3. Todo lo demás será un
simple mapeo 1 a 1.
Para comenzar, lo primero que tengo que hacer es iniciar [Link] y crear una nueva
transformación. Si estás utilizando un repositorio, genial; de lo contrario, elige Sin
repositorio en la pantalla de inicio. Cuando estés en Kettle, ves a Archivo / Nuevo /
Transformación.
Figura 3. Nueva transformación
Y
Página 77
EL PROCESO DE ETL
Con el nuevo archivo creado, arrastra más de 3 nuevas entradas de archivo de texto
(Text File Input), ubicadas en la sección Objetos Base (Core Objects) / Entrada, al área
de transformación.
Figura 4. Nuevas entradas de texto
Con las tres entradas de archivo de texto en la transformación, necesitaremos
configurarlas para leer los archivos de datos. Lo primero es añadir el archivo a la lista
de archivos de entrada. Haremos esto haciendo clic en Explorar (Browse), luego
cuando seleccionamos el archivo, haga clic en Añadir (Add). Con el archivo
seleccionado, ahora necesito configurar la información de delimitación. Estos archivos
están delimitados por tabuladores, sin calificadores de texto (es decir, sin comillas
alrededor de las Strings) y sin fila de encabezado. Entonces, haremos clic en el
contenido y estableceremos las opciones apropiadas. Como este es un archivo
delimitado por tabuladores, necesito hacer clic en el botón Insertar Pestaña (Insert
Tab) para agregarlo a la pestaña.
Y
Página 78
EL PROCESO DE ETL
Figura 5. Opciones del Delímetro
Ahora hemos de seleccionar los campos (fields). Para hacer esto, dado que tenemos un
archivo, todo lo que tenemos que hacer es hacer clic en el botón Obtener Campos
(Obtain Fields) en la pestaña Campos (Fields). Por cuestiones de desarrollo, nombraré
los campos que necesito y dejaré los nombres de campo solo para los campos
restantes. Además, dado que solo estamos usando estos campos como campos de
descripción, cambio los Date Fields a Strings.
Y
Página 79
EL PROCESO DE ETL
Figura 6. Selección de campo
Eso es todo para Productos (Products), haremos lo mismo para las Tablas de Categorías
y Atributos. Ahora que las entradas de texto están configuradas, necesitamos hacer las
transformaciones. La parte más difícil será desnormalizar y unir los atributos en mi
flujo de entrada para alimentar mi archivo de texto de salida. El primer paso que debo
tener en cuenta es ordenar mis datos para el Field Row Delimeter. Por lo tanto,
arrastramos sobre un objeto Ordenar filas (Sort Row) desde debajo de la sección
Transformación. Necesito conectar el origen de datos de texto del atributo (Attribute)
al objeto Sort Rows para editarlo correctamente. Para hacer la conexión, necesitamos
mantener presionada la tecla Shift en el teclado y arrastrar desde Attibutes a Sort
Rows. Esto indicará a la transformación que debe producirse un "salto" en pasos entre
estos dos objetos. Ahora, edito mi clasificación para ordenar en función de la
identificación del producto.
Y
Página 80
EL PROCESO DE ETL
Figura 7. Opciones de Sort Rows
A continuación, arrastramos sobre Select Values y conecto a Sort Row. En la pestaña
Seleccionar/Alterar pestaña (Alter Tab), hago clic en Obtener Campos (Get Fields) y
dejamos todo en predeterminado. Como no utilizaremos los campos sin nombre, voy a
la pestaña Eliminar (Remove) y selecciono esos campos.
Figura 8. Eliminar campos
Y
Página 81
EL PROCESO DE ETL
Esta ha sido la parte fácil. Ahora necesitamos desnormalizar los datos. Lo que quiero
hacer es mostrar los primeros 3 atributos para cada producto en columnas
consecutivas. Intentamos usar Denormlizer aquí, sin éxito. Así que terminamos usando
el Row Flattener. La forma en que funciona es definiendo un solo campo que
contendrá los datos consecutivos. A continuación, define columnas adicionales. El
Flattener se copiará en cada columna en el orden en que recibe los datos. Entonces,
por ejemplo, digamos que tiene los siguientes datos definidos en un campo en su flujo
de datos entrantes:
Pantalla ancha
-Sub Titulado
-Español
Y en su File Flattener, definimos los siguientes campos de destino:
-FieldOne
-FieldTwo
-FieldThree
El Flattener asignaría los valores de esta manera:
-FieldOne = Pantalla ancha
-FieldTwo = Subtítulos
-FieldThree = Español
Y
Página 82
EL PROCESO DE ETL
También parece que una vez que se han agotado los valores únicos, simplemente se
completarán las columnas con el último valor único que queden. Para nuestro
propósito, esto está bien. Defino mi Acoplador de Campo (Field Flattener) con mis
valores para Nombre de Atributo (Attributes Name) en la siguiente figura.
Figura 9. Aplanador de Campo (Field Flattener)
Con este paso final en la transformación, el flujo de datos para el atributo se verá más
o menos así:
-ID del Producto
- ID Interno
-Nombre del Atributo
-Search_Field_1
-Search_Field_2
-Search_Field_3
Y
Página 83
EL PROCESO DE ETL
-Search_Field_4
Ahora, necesitaremos unir el flujo de datos de productos (Product Data Stream). Para
hacer esto, utilizaremos una unión. Necesitaremos unirnos a la ID Interna o mi ID de
producto, ya que ambos identifican de forma exclusiva el producto. Así que lo usamos
como unión. También necesitamos establecer este tipo de unión Left Outer Join, ya
que necesitamos que los Porductos aparezcan aunque no haya Atributos que los unan.
También estableceré Productos como mi alimentación primaria, y Atributos como mi
alimentación secundaria. Es importante que cuando realicemos las conexiones en el
editor de Transformación, conectemos tanto la Entrada de Texto de Productos
(Product Text Input) como el Acoplador de Fila (File Flattener).
Figura 10. Unión
Lo último que tenemos que hacer para mi transformación es modificar la identificación
del producto (Product ID). Como se trata de una alimentación de prueba, necesitamos
que la identificación del producto sea única. Haremo esto con Java Script. También
necesitamos modificar el campo de atributo para eliminar cualquier canalización
(pipes) en el Campo de Datos (Data Field), ya que mi archivo de salida debe ser un
archivo de texto con delimitación de canal. Por lo tanto, arrastraré un componente
Y
Página 84
EL PROCESO DE ETL
Java Script, y en Javascript escribiré el código apropiado para añadir en incrementos de
10 millones al ID del producto (que modificaré en ejecuciones secuenciales), y usaré el
método de reemplazo de cadenas (String) para reemplazar cualquier pipe.
Figura 11. Código Javascript.
La parte final de esto es exportar un archivo de texto. Necesitaremos establecer el
nombre de archivo para salida, delimitar opciones y campos que usaremos en el
Archivo de salida.
Figura 12. Nombre de archivo de texto de salida (Output Text Filename)
Y
Página 85
EL PROCESO DE ETL
Figura 13. Delímetro de texto de salida (Output Text Delimeter)
Figura 14. Campos de texto de salida (Output Text Fields)
Notaremos en la Figura 13 que tenemos el conjunto de Anexar (Appened Set). Esto se
añadirá a cada ejecución de la transformación al final del archivo de texto de salida.
También tenemos Price dos veces ya que el Display Price y Actual Price son lo mismo.
Y
Página 86
EL PROCESO DE ETL
Ahora, la parte final de esta transformación es las Categorías (Categories). Lo único
que necesitaremos de especial para Categorías es una entrada codificada para la
asignación de Super Categoría (Super Category) en el dispositivo de búsqueda interna
para las categorías en el feed de datos del proveedor. Lo lograremos a través de un
componente de JavaScript entre la entrada de texto de categorías y los archivos de
salida. No mostraremos los archivos de salida para categorías ya que no es relevante
para la transformación principal con los atributos y productos. La figura final muestra
la Transformación terminada.
Figura 15. Transformación finalizada
Ahora, podemos crear el feed ficticio y añadirlo con solo hacer clic en un botón. Por
supuesto, esto también se aplica a las transformaciones de datos de producción reales.
Kettle funciona un poco más lento que una solución codificada a mano, pero no lo
suficiente como para descartarlo debido a la cantidad de tiempo que ahorra en el
desarrollo y la cantidad de tiempo ahorrada al modificarlo cuando es necesario.
Y
Página 87
EL PROCESO DE ETL
4.3 ENLACES DE INTERÉS
4.3.1 Manual de Pentaho
2016. Pentaho Data Integration.
[Link]
En este enlace encontramos los manuales oficiales de Pentaho Data Integration. Hay
tanto la descripción de todos sus componentes como explicaciones para llevar a cabo
procesos con esta herramienta y cuenta también con vídeos explicativos.
4.3.2 JSON
JSNONPath Online Evaluator.
[Link]
Este enlace nos lleva a una página web en la que podemos interpretar JSON.
[Link]
Y en este otro vemos si hay errores.
4.3.3 API de Twitter
API Reference index.
[Link]
En este enlace encontramos una página de documentación de la API de Twitter. Nos
enseña el método GET search/tweets en ese curso pero como veréis hay muchos más
a utilizar.
4.3.4 API de Facebook
Graph API Reference.
[Link]
Y
Página 88
EL PROCESO DE ETL
En este enlace encontramos una página de documentación de la API de Facebook.
4.3.5 API Yahoo
Yahoo Weather API for your Apps.
[Link]
En este enlace nos encontramos con una muestra de respuesta de la API
meteorológica de Yahoo.
4.3.6 Desarrollador de Facebook
Facebook Developers.
[Link]
Entrando en este enlace y registrándonos como nos pide, podemos darnos de alta
como desarrolladores de Facebook.
4.3.7 Twitter Apps
Twitter Apps.
[Link]
Enlace para acceder a crear la aplicación en Twitter para conectarse con Kettle.
Y
Página 89