Talend Open Studio para ESB / Data Quality
language: ES
WEBVTT ¿Vale? Bueno, muy buenas tardes nuevamente. Sí tenemos audio. Sí me están escuchando. OK, listo. Continuamos todavía. Persisten los problemas a nivel del servidor de las máquinas virtuales. No se pudo corregir mucho durante esta hora, pues prácticamente quedamos exactamente igual. Esperemos que el día de mañana, mañana sí, tenemos clase o es el miércoles. Ah, no recuerdo. Podamos entonces solucionar un par de inconvenientes. Seguimos entonces para vean mi pantalla del por favor para continuar con los ejemplos. Retomo un poco. En la última sesión, el último ejemplo que hicimos es que teníamos eh dos componentes en este caso, el test filter row y el test filter column. El test filter row pues aunque es muy básico a nivel de comparación o de pronto puede ser un poco complejo cuando hay muchas sentencias a comparar con y y con or. Ahí puede haber unos inconvenientes. Entonces hay un componente en el cual me permite hacer las dos cosas que hace el test filter row, el test filter column. Existe un componente que se llama el temat, que es un componente sumamente importante en la arquitectura de talent, que me permite hacer muchas cosas en un solo componente. Entonces en este mismo eh este mismo job que está aquí, vamos a hacer lo siguiente entonces. Vamos aquí a de irse aquí en ploy y vamos a tomar nuevamente este que está aquí y vamos a soltarlo de este lado, ¿Viste? Como un debe input y lo van a colocar acá en la parte de abajo, los que puedan conectarse con todo la disculpa al caso, lo colocan acá abajo. Listo. Vamos a hacer este mismo ejercicio, pero ahora eh utilizando un componente de tipo temat. Para que filtre las column, eh filtre las filas y filtre las columnas. Entonces, vamos aquí, agregué entonces un employee. Tome la eh la tabla que se llama employee, suelte la key al canvas. Es importante entender que eh cuando suelte un componente en el canvas, es importante independiente si es un JSON, un XML, al final todos los componentes aplican. Es decir que cuando todos los los componentes entran al canvas eh automáticamente pues se trabajan de la misma forma. Anda lo mismo si es una tabla, si es digamos un JSON, al final puedo aplicar los mismos componentes. Entonces, vamos a buscar aquí un componente que se llama temap y llevemos esto a un telorow. Este telorow serían estos tres elementos que son los que tengo aquí. Haga por favor la unión de los componentes, fila, aquí me vaya aquí, suelte aquí al temap, y el temap lo suelta al telorow. Ahora, necesariamente para hacer una conexión de un temap hacia cualquier salida, necesariamente me toca especificar el nombre de la salida. Entonces, voy a colocar aquí salida, porque aquí me aparece que ya hay un componente dentro del telorow que se llama salida. Entonces, salida, voy a colocarla aquí, salida formateada, voy a llamarla así. Sí, porque no puede haber dos dos label en el mismo yo con el mismo nombre. Vamos aquí, OK, y listo. Note algo particular, note que esta vez le aparece entonces un punto o un signo de admiración en rojo. Cuando ese signo de admiración le coloque o se coloque sobre algún componente de talent, indica que hay un error de configuración o le falta configurar o hay un problema en la configuración de ese elemento. Normalmente ese símbolo en rojo aparece cuando falta algo por configurar. Y en esta parte me hace falta por configurar el temap. Démole entonces no sé si espero un momentico, espero a José que ya se está conectando, le hizo José. Vamos bien, perfecto. Ahora José, por favor, entra la configuración del temap. Démosle doble clic a este temap. Y listo. ¿Cómo se hace en las columnas? Entonces note la configuración de su temap. Del lado izquierdo tiene las columnas que entran y del lado derecho tiene las columnas que deben salir. Entonces simplemente lo que va a hacer es que va a tomar la columna de izquierdo y va a llevar al derecho las columnas que ustedes sean. ¿Cómo lo hacemos de la siguiente forma? Aquí por unas cuestiones que puede tener unos problemas a veces, te aconsejo que del lado derecho amplíes el alto de la salida para que sea más sencillo. O sea, te ubicas en la parte de abajo y aquí te aparece un icono que se convierte en flecha para hacerlo más grande. Hazlo un poquito más grande porque a veces puede tener problemas. Entonces ahora de este lado vamos a hacer lo siguiente. Seleccione first name y acto seguido city y country. Y ahora lo que seleccionó clic sostenido y lo suelta del lado derecho. Y ahí has hecho entonces un filtro de columnas. Solamente las columnas que están del lado derecho son las que se mostrarán. Perfecto. Estoy viendo a Jasmine. Listo, suéltalo del lado derecho. Perfecto, listo. Ahora, ¿cómo hacemos un filtro, un te filter row? ¿Cómo filtramos filas? Bueno, aquí para el filtro de filas me toca entonces codificar y cuando me toca codificar, me toca codificar en el lenguaje de la herramienta que sería Java. Para este caso entonces note que del lado izquierdo existe una pequeña flecha. Expanda esa flecha, por favor, y se le abre un área de texto, un text área. Le clic en la flecha y se le va a expandir ahora va a tomar los elementos que desea filtar y los va a soltar en ese text área, es decir, mire lo siguiente. Martín, la máquina. Sí, se reinició. Ah, sí, aquí me están preguntando casualmente. Un Listo, perfecto, ya la hice. Bueno, ahora, ¿cómo hacemos el filtro a nivel de lo que es de este componente que se llama temat? Entonces, va a seleccionar las columnas que quiere filtrar. En este caso quiero filtrar por country. Entonces, tome country y lo va a soltar aquí en este text área acá arribita. Listo, entonces, vamos a lo siguiente. Aquí como esto es Java, no podría, aunque depende mucho de la versión que esté de Java, no podría hacer, esto lo voy a lo voy a mostrar aquí en este acá, no podría hacer esto, igual Canada, porque ahí no estoy comprando a nivel de lo el contenido de la variable, si no estoy comprando a nivel del objeto. Entonces, aquí para poder comparar esto, me tocaría hacer la siguiente función. Hay veces que hay veces que se la muestra y sería, le doy aquí punto equals. Abro paréntesis y me quedaría de esta manera. Como esto Java es sensible a mayúscula y minúscula. Esa sería la sentencia inicial que debería agregar. Después del road country, le doy punto equals que es la forma de Java para poder comparar una variable string con un valor. Debe quedar exactamente igual como punto equals, abro paréntesis, comilla doble Canada. Permítame y yo lo agrego aquí. Yo creo que cuando doy punto aquí, no, no me sale la ayuda y veces que sale. Equals y me quedaría aquí como Canada y cierro Equals Canada. Ahora, recordamos entonces que sean de Canadá y de la ciudad de Cálgari. ¿Cómo sería entonces? Voy a hacer lo siguiente, como aquí viene un I, un I en Java es así, es decir, un I en Java es doble aspersand, I. Entonces, le agrego que esté doble aspersand aquí. Espacio, doble aspersand, deja un espacio. Y ahora voy a soltar la ciudad city aquí. Ahí me sobrescribió el Ah, un momento, que fue que me sobrescribió, me parece a mí que cuando tenía el doble aspersand, le estoy dando city a este lado. Ahora sí, lo cogió, no sé qué está pasando. Me quedaría esto de esta manera. Me quedaría así la sentencia porque esto es con Java, listo, entonces me quedaría así, row city punto equals punto equals y aquí le quedaría un bloco Calgary. Perdón, quedaría así. Si desea puedo compartir esta sentencia. Ah, sí, bueno, si se llama rodo, el problema es que no se llama exactamente igual. Aquí me quedaría punto equals. Equals, abro comilla, listo, y sería Calgary. Si desea comparto esto por aquí, por el chat de por el chat del team, ahí compartí cómo me quedaría. Al final me quedó de esta manera. Voy a copiarla directamente para que vean textualmente cómo me quedó. Sí, es la misma esta que está aquí. Sí, es la misma. Quedaría row country punto equals, abro comillas, doble Canadá y city. Si ya la tienes, si ya agregaste, por favor, bueno, tú ya no ejecutes, por favor. Dale, entonces, si terminaste de agregar esto, si no, espera un momento más. Dale, por favor, OK. Te pide que si desea propagarlo, propagar los cambios y darte que automáticamente cuando diste se te quita, le haciendo la admiración en rojo, se te quita, ¿por qué? Porque ya has hecho la configuración. Eh, Jasmine, ¿le agregaste ya? Para ver el caso tuyo. Ah, sí, va bien. Perfecto. Ahora aparta el row dos punto city. Ahora colócale punto equals, punto equals, equals, abro comilla, abro comilla, listo, comilla doble, Calgary con C mayúscula, Calgary, listo, dale OK. Dale OK a la configuración del componente. Ya lo terminaste de configurar. OK. Terminamos con el OK y listo. Ahora vamos a hacer lo siguiente. En algunos casos cuando estás a nivel de lo que es testing o developer, hay veces que nada más quieres probar una parte de tu componente, ¿OK? Entonces, como cuando quieres probar una parte de componentes, pues puedes hacer lo siguiente. Quiero ahora, mire, ejecutar este subyacht y no ejecutar este subyacht de acá arriba. Entonces, ¿cómo puedo hacer? Vete al primer componente donde inicia el subyacht, ese de aquí, le da clic derecho y le dice que desactive el subyacht entero, world subyacht. Desactivar subyacht entero y esto lo que hace es que desactiva este subyacht para probar entonces el subyacht siguiente. Si todo está listo, por favor, vuelve a ejecutar y debería nada más ejecutar el subyacht con cinco filas, debe ser la respuesta. Ahí estamos, las ocho filas de entrada y salen cinco filas que fue lo esperado. Vamos a ver si. Sí. Desactivarlo. Listo, bien, estaba así, en un momento estaba así, activar eso, está así. Búscate el primer componente donde inicia el subyacht, que debe ser employee. Le da clic derecho a ese componente y hay una opción entre muchas es eh está desactivar solamente el componente y está desactivar el job completo, o sea, world subyacht. Le das ahí y se desactiva completamente. Eso lo hacemos normalmente a nivel de developer o de development o de testing para probar solamente una pequeña parte del componente que estoy haciendo. Y ahora sí, vuelve a ejecutar. Ok, listo, gracias por preguntar. Vuelve a ejecutar y debería entonces aparecerte cinco filas nada más. Ocho de entrada, ocho que entran y cinco y tres que se filta para un total de cinco de salida. Bueno, cinco que se filta, perdón, tres. Tres no cumplen la condición. Listo, sigamos entonces aquí esto es como es mucho tema, me toca a tomar un job para hacer muchos ejemplos. Ya vimos la manera entonces en la cual eh yo puedo desactivar entonces un subyacht. Antes de agregar algo, vamos a ver cómo hacemos esto para formatear alguna salida. Porque aquí estoy tomando la misma salida de entrada y solamente he hecho unos filtros. Pero qué tal si quisiera hacer un cambio. ¿Cómo sería? Bueno, el tema me sirve para hacer cambios. Vamos a hacer un cambio muy sencillo. Entra nuevamente al tema y vamos a suponer que te piden ahora que la salida no sea el nombre, sino sea el nombre completo. ¿Qué es el nombre completo? El nombre completo es la unión del primer nombre con el segundo, no, eso, con el apellido. Cuando vas a formatear algo, es decir, vas a cambiar la entrada por equio, por yermotivo, por el caso de este, quiero, por ejemplo, formatear uniendo dos campos. Entonces, el tema te funciona a nivel muy básico. Entonces, ¿cómo hacemos el tema? Para poder formatear, el tema se apoya de variables. ¿Cuáles son las variables? En la sección del medio encontrarás algo que dice bar, ¿Verdad? En esa bar voy a definir las variables que quiero tomar para formatear. Entonces, ¿Aquí qué puedo hacer? Dale clic aquí en el más para que te agregue una nueva variable. Voy a hacer este mismo ejemplo de dos formas. Harlo también de dos formas de, digamos, de llegar a lo mismo y tú decías al final ¿Cuál te gusta más? Entonces, mira lo siguiente. Deseo unir first name con last name. Entonces, una forma que puede hacer es lo siguiente. Tomo los dos columnas que quiero operar. Este señor que está aquí, la quiero operar. La selecciono con control y clic en cada una de ellas cuando eso he tenido. Y la suelto en la expresión de la variable. Suelto aquí. La suelto en la expresión de la variable. Ahora, voy a entrar a la configuración de la variable. Entonces, cuando das clic aquí en la expresión, te aparece al final un menú hamburguesita ahí de un botón con un menú hamburguesa ahí. Dale clic ahí a ese botón y te va a aparecer un text area. Ahora, toma primero. Aquí me quedo al revés. Voy a tomar el first name. Voy a cortarlo de aquí. Lo voy a colocar al principio. Y lo que va a hacer es una función sencilla en Java. Para concatenar en Java, lo voy a dar aquí un más. Abro comillas doble, espacio en blanco, cierro comillas doble, más. Bueno, te lo muestro acá en el notepad. ¿Cómo te quedaría? Quedaría de esta forma. Voy a bajar un poquito aquí. Quedaría road doll first names más, abro comillas, dejo aquí un espacio en blanco para no unir los dos elementos, cierro comillas doble, más. Toda esta parte de scripting, configuración, al final termina haciendo con el lenguaje Java, porque la herramienta está basada en Java. Más, comillas doble, espacio, comillas doble, más. Si terminaste de hacer esto, entonces le das aquí OK y dale, por ejemplo, un nombre a la variable, ponla acá donde hice un nombre a la variable, colócalo como nombre underscore completo. Nombre underscore completo. Ernesto, se te reinició la máquina, estoy viendo que están fallando las máquinas. Nombre underscore completo. Ya te explico en otro, en otro ejemplo, esta parte del tipo string, en este caso nos sirve ese tipo. La otra forma de hacer lo mismo. Mira cómo es la otra forma, decide al final cuál es la que más te guste. Vete aquí donde está nuevamente en el más y dale para agregar una nueva variable. Hale clic en el más de las variables para agregar una nueva. Y ahora vea la configuración en la expresión, dale clic en el menú, en el botón hamburguesa que está ahí. Y nota que aquí al lado del text area te aparece un table donde están los nombres de las columnas. Entonces, ¿qué vas a hacer? Toma los nombres de columnas que necesite, cómo le das doble clic, por ejemplo, false name, le doy doble clic y me aparece de este lado. Formateo, le doy aquí más comillas simple, comillas simple, más y después doy doble clic al last name. Aquí lo que vas a hacer es que puedes seleccionar las variables en la medida que pues las vas necesitando. Y las más, creo que esta forma me parece un poco más sencilla o más rápida, no sé, bueno, al final depende mucho. Vamos a darle aquí clic en OK. Y si quieres, cambia entonces el nombre, nombre completo, aquí lo voy a colocar entonces donde record uno, porque no puedo tener entonces dos variables con el mismo nombre. Listo, mire lo que quiero ahora, quiero que mostrar el nombre completo, pero quiero quitar el false name. Entonces, o lo siguiente, estos elementos que están aquí, si yo le doy clic acá arriba, que el más, y el igual, el, el, este señor que es el, una X de eliminar, esto es lo que elimina en la salida. Entonces, si yo doy clic aquí, elimino toda esta salida acá. Para eliminar un elemento de la salida, te selecciona la salida aquí, la selecciona de este lado, y vas a ver que en la, bueno, tampoco era necesario seleccionarla, ahí me pasé, no era seleccionarlo. Acá elige la columna que quieres eliminar en la parte de abajo, en la parte inferior derecha, selecciona la columna que quieres eliminar, y ahora si le das clic aquí en el X, en el X de acá abajo, el X el que te elimina columnas que estén en una salida, el X de acá arriba lo que te elimina es la salida completa. Entonces, ¿por qué les decía a algunos en que este G lo aumentara a lo máximo? Por ejemplo, este G lo tengo yo de esta forma, mira acá un momento para ver qué error puede haber. El problema que tengo es que a veces cuando el G está muy pequeño ahí y lo suelto, lo suelto sobre un elemento, ya te cuenta que aquí tengo dos variables, aquí me va a causar un error. Por eso es que cuando vayas a agregar variable, creo que la mejor técnica para evitar que se unan varias columnas es la siguiente, es que abras este G y lo más que puedas aquí, listo, y ahora tomas una variable de acá y la sueltas aquí, la sueltas aquí y la sueltas acá bajito, en el espacio en blanco. Si deseas cambiar el orden, acá en la parte de abajo, aquí está un mayor y un menor, si tú quieres puedes subir y bajar las columnas que tú quieras, por ejemplo, voy a subir nombre completo para que quede al principio, y voy a subir country para que quede segundo. Entonces, aquí puedes formatear el orden en las cuales quieres que aparezcan las columnas. Listo, entonces, aquí he hecho una parte de filtrar columnas, filtrar filas y he formateado algunas columnas. Vamos a darle aquí, OK. Y si quiere, podemos ejecutar, entonces, a ver, debería tener una salida un poco diferente. Ahí tengo, aquí tengo Nancy Edwards, James Peacock, no sé, Margaret Park, y ahí también, ya se hace el formateo de las columnas como tal. Perfecto, continuo, sé que hay algunos que tienen inconvenientes, pero bueno, aquí, trateamos de soltar, de dar lo más que podamos. Listo, seguimos entonces, por favor, haga lo siguiente ahora. Váyase aquí donde dice Implogy, este Implogy que tenemos aquí, y ahora en el primer componente que es Activastes, dale click aquí, digamos que ya hiciste la prueba, sabes que te funcionó y desea ejecutar todo en conjunto. Dale click derecho aquí, y dale activar su job entero, y te activa el su job nuevamente. Listo, entonces, eh, prestemos atención a lo siguiente ahora, nota que ya yo te definí esta parte de lo que es su job, y los su jobs por defecto se ejecutan en esta versión, se ejecutan de manera secuencial. Pero yo podía, por defecto, el primer su job que se ejecuta, eh, va a ser el primer, digamos, el primero que que creaste. Y en el orden en que vayas creando su job, se van ejecutando de esa forma. Pero algunas veces tú deseas condicionar los su jobs que se ejecutan en un orden específico. Por ejemplo, vamos a suponer en que ahora, si yo intento ejecutar esto por defecto, intentará ejecutar este su job primero, y después este su job de segundo, por el orden en que yo adicione los componentes. Y ese orden es difícil que lo puedas cambiar, digamos, a nivel, a lo menos que borre los componentes, y lo vuelvas a agregar. Una forma es que yo, entonces, encadene los su jobs de la forma en la cual yo quiero que los ejecutes. Por ejemplo, supongamos que yo quisiese que ejecutara este su job primero, y después que ejecutara este que está acá. Entonces, ¿cómo se hace? ¿Cómo enlazas su jobs que están dentro de un job? La forma de hacerlo es de la siguiente manera. Te vas al primer componente del su job que quieres que ejecute, en este caso quiero el segundo, le da clic derecho, te vas donde dice disparador o trigger, te puede darse de pronto en inglés. Y aquí voy a explicar inicialmente dos disparadores. Un disparador que dice on su job okay, o el otro disparador que dice on su job error. Entonces, ¿qué quiere decir? Que si yo cojo el disparador on su job okay, si ese su job se ejecuta de manera correcta, procede a ejecutar el job que está concatenado. Si escojo on su job error y me conecto con el segundo su job, lo que hace es que si hay un error, se ejecute el su job siguiente. Eso es lo que trata de decir ese disparador. Entonces, vamos a acuerdar el disparador on su job okay. No sé si nos sale, disparador on su job okay. Y enlázalo con el primer elemento, el su job siguiente. No sé si disminuyes esta parte aquí, aquí, para que sea más fácil, para que sea más fácil. Aquí está, esperate que se me perdió ahora este señor acá. Se me perdió el su job que sería el de base de datos. Perdón, era filter file, ¿verdad? Este de aquí. Perfecto. Perfecto. Procedemos a ejecutar entonces ya después de este señor que está acá, voy a ejecutar esta ronda aquí, cualquier ronda puede ser válido. Y nota entonces que cambia el orden. Primero ejecutaría el de abajo, que es donde estoy diciendo que inicia, y acto seguido ejecutaría el de arriba. Perfecto. Entonces, esta es la forma en la cual tú puedes condicionar cuando defines una ejecución secuencial de su job, cuál viene primero, cuál viene segundo, cuál viene tercero. Y los triggers te van a permitir disparar cuando el su job esté de forma correcta o si por el contrario hay un error en la ejecución del su job. Perfecto. Listo, es un su job error funciona exactamente igual, la única diferencia es que si hay un error en la ejecución del su job, pues se ejecuta el su job al cual está conectado. Es la única diferencia de un su job OK, perdón, el su job OK coincide exactamente con el su job error. Listo. Bueno, sigamos entonces. Vamos a cerrar todos estos señores que están aquí y vamos a agregar entonces otro job para hacer otro ejemplo. Y así vamos entonces empapando un poco con la herramienta. Vamos clic derecho y vamos a crear un nuevo job y lo voy a llamar Jot Migración Base Underscore Datos. Jot Migración Base de Datos se va a llamar el nuevo job. Jot Migración Base de Datos. Voy a migrar entonces una tabla que tengo en este caso en MySQL la voy a migrar al motor Postgres. Esa es la idea que tengo con este nuevo job. Esto tenemos el nuevo job. Para hacer esto entonces hay que iniciar de esta forma. Por favor, abra en virtual el PGAcmin. Váyase y busque la aplicación que se llama PGAcmin que es el administrador de base de datos de Postgres. Por favor. Listo entonces ¿Qué vamos a hacer? Vamos a migrar los datos que están. Alguna tabla que están en Chinut de MySQL. Vamos a migrarlas hacia un motor, alguna base de datos que vamos a tener ahora en Postgres. Es un elemento muy común que se hace cuando deseo migrar pues a nivel de tabla porque a nivel de de funcionalidad digamos por si bien son almacenados pues si no lo hace la herramienta como tal y ya está ya. Esperamos que cargue el PGAcmin. Alguno ya le está cargando. Listo, creo que la mayoría. Váyase donde dice server, por favor, amplíe server. Y ahí le pregunta ¿Cuál es la clave? La clave es root, mismo de raíz en inglés, todo en minúscula, root. Y le da clic para que salve y no nos vuelva a preguntar ese clave nuevamente, root. Root de raíz en inglés. Root de raíz en inglés. Catalina, ¿Sí tuviste error o veo que hay alguna pantalla diferente? Vamos a ver. Ah, listo. No, dale click ahí, dale close. Cierrate ahí. Del lado de server, server, expande el la adición de server en esta flechita. Del lado izquierdo. Expande esa flechita y sí, listo. Colócale root de raíz en inglés. Y le dice que salve el password para que no nos vuelva a preguntar más. ¿OK? Bien listo. Ahora, ¿Por qué nos conectamos a este administrador? Porque una de las cosas que no tiene el señor Talen a nivel de componentes es la creación de una base de datos. Aunque yo podía ejecutar una sentencia SQL de Talen hacia un motor, pues carece de sentido malgastar un componente para solamente crear una base de datos. ¿No? Porque creo que de pronto bueno, también depende mucho de lo que vayas a hacer al final. Por favor, vete a la sección donde dice database si quieres las expandes. Ahí nada más de una base de datos que es la base de datos de diccionario de datos de Poggres, que es Poggres. Vaya entonces, váyase aquí donde dice database. Nuevamente clic derecho en database. Y entonces te sale la opción que dice create. Database. Y solamente la vamos a llamar Chinook porque es exactamente como la tenemos en MySQL. Chinook con doble o. Y ya posteriormente le das entonces safe. Y listo, ya te crea la base de datos ahí. En este caso se llama Chinook, no hicimos ninguna configuración adicional. Ya después de haber terminado la configuración de la base de datos, por favor ahora vete nuevamente a tu talent. Y te sitúas, por favor, en la sección de metadata. Vamos a hacer una conexión ahora hacia la base de datos que se llama Chinook, pero que está en Poggres. Por ende, qué hacemos? Como es una conexión a base de datos, buscamos en metadata la opción de connection. Te damos aquí click. Vamos a darle aquí en crear conexión, crear conexión y la vamos a llamar exactamente igual como tenemos la base de datos Chinook, pero abro paréntesis y le coloco Poggres. Indicando en que esa base de datos está en Poggres. Le damos entonces next. Y normalmente cuando uno hace todos los días lo mismo, ya empieza a tener memoria. Llegamos por reflejo ya. Ahora aquí, cuál es el tipo? Bueno, primero selecciono el tipo de motor que me voy a conectar. Expando aquí donde dice DBTi y debería escoger ahora Poggres. Poggres SQL, aquí está. Bien, el usuario por defecto DBA de Poggres se llama Poggres. En el SQL te lo mando por aquí el nombre aquí en el chat por si acaso de pronto no lo alcanzas a ver. Se llama Poggres, el usuario por defecto DBA que se crea. La contraseña es root, que fue la misma que nos accedimos ahora. El servidor es 127.0.0.1 porque está a nivel local. Ahí pude haber colocado ya sea una URL o pude haber colocado una IP como es este caso. Si es una base de datos que tienes en la nube, simplemente vas a colocar la URL y te va a conectar eh te va a conectar el talent a cualquier base de datos. Y la base de datos se llama Chinute. Para el caso muy particular de Poggres que así como el de Oracle, ellos manejan el concepto de lo que se llaman esquemas, aunque un esquema para Poggres es diferente para un esquema en Oracle. Ahí donde dice esquema no va a colocar nada, por defecto, no colocar nada, indicaría que el esquema que se va a conectar es el esquema público. Donde dice esquema, ahí no lo va a colocar nada, pero si tienes un esquema dentro de una base de datos de Poggres, entonces ahí colocas el nombre del esquema que te quiere conectar. Como nos vamos a conectar por defecto hacia el público, dale entonces Test Connection, dejamos ese esquema en blanco. ¿Qué va a hacer esto? Me va a descargar los drivers de conexión, pues lo hará solamente una sola vez y me agrega esos drivers como tal a la instalación del talent y dele entonces aquí OK, a mí no ha pasado ningún error, listo, entonces le damos aquí Finish. Listo, entonces vamos a migrar las siguientes tablas, vamos a migrar la tabla que se llama, váyase a Chinut, pero de MySQL. Vamos a migrar primero la tabla customer. Si vamos acá en customer, ¿Qué vamos a hacer entonces? Tome customer, lo selecciona y lo suelta en el canvas. Y aquí entonces, ese customer va a ser de entrada porque voy a leer tanto la configuración que tiene a nivel de esquema como los datos, entonces queda por defecto como TDB input. Te va a aparecer el customer ahí. Listo, acto seguido a hacer lo siguiente. Como lo que voy a crear es una nueva tabla porque voy a hacer una migración. No voy a sobreescribir datos o actualizar datos de una tabla a otra, sino que quiero que se cree una tabla nueva y que se tomen los datos de la entrada que tiene. Entonces, lo que voy a hacer es claro que aquí esta base de datos va a estar vacía. Entonces, mira lo que voy a hacer para hacer la migración. Voy a tomar la conexión hacia Postgres y la voy a soltar de este lado con una pequeña diferencia. Va a ser de salida porque voy a crear un nuevo elemento. Entonces, en vez de donde dice DB input que está por defecto, es como TDB output Postgres. Y le doy aquí OK. Claro, perfecto, perfecto. Perfectamente, listo. Busca la conexión de la conexión a Postgres, que es esta chinú. Y esta conexión las sueltas del lado del canvas. Con una pequeña diferencia, como vas a hacer cambios ahí en esa base de datos, vamos a escoger la opción TDB output. Le das OK. Nota ahora a nivel gráfico que las flechas son iguales. No son iguales, perdón. La entrada va a quedar en el medio y la entrada es normalmente moradita y la salida es verdecita. Pero a nivel de posición. Listo. Le hacemos preguntas. Listo. Eh la primera eh la entrada va a quedar en todo el centro y la salida va a quedar en el la de acá arriba en la parte de arriba. O si tú lo que quieres hacer es una migración donde quede todo exactamente igual. Puedes hacer lo siguiente. Puedes conectar directamente la entrada con la salida. Si de pronto tú quieres formatear, cambiando, quisieras cambiarle el nombre de la columna, agregar nuevas columnas. Pues en el medio tendrías que colocar por ejemplo un tipo tema. Donde tú puedas formatear, agregar o quitar lo que tú quieras. Ahora hacemos entonces ese ejemplo. Vamos a ver cómo nos va con esta parte. Supongamos que quiera migrar todo exactamente igual. Y vamos entonces tomamos este elemento que está aquí. Particularmente a mí me gusta de esta forma. Clique aquí, fila, voy aquí a May y suelto y conecto acá. O puede ir desde la, desde esa flechita naranja que sale al inicio y la puedes conectar. Perfecto. Vamos un momento a ver la configuración y recordar la configuración de una conexión de bases de datos de entrada. Dale doble clic aquí a customer. Listo. Y recordarás que aquí al final lo que hace es un select. Este select tú lo puedes cambiar si tú deseas de pronto. Si tú quieres cambiar, listo. Pero me interesa aquí nuevamente recuerden que cuando yo tengo un componente de entrada que tiene estructura, todos van a tener este editar esquema. O sea, dale clic en editar esquema que está aquí. Dele change to build property. Ese que está aquí. Change. Y aquí te va a mostrar la estructura de entrada de esa tabla. Importante entender estos elementos aquí. A ver si trato de ampliar este diseño de acá. Lo he visto. Voy a ampliarlo aquí. Miren lo siguiente. Aquí tengo columna. Columna cómo la está llamando Java. DB column cómo viene de la base de datos. Esta es Java. Este columna es Java. Este DB column es cómo viene la base de datos. Pero yo puedo hacer los cambios aquí a nivel de Java. Ahora, aquí tengo dos tipos. Un tipo y un DB type. Este tipo es el que mapea Java porque normalmente que es una conversión del tipo de entrada con que viene desde la base de datos con un tipo de datos que tenga Java. Por ejemplo, de la base de datos viene INT y Java lo tomó como INT. Pero, por ejemplo, el varchar como tal, Java lo tomó como un string. Porque para manejar, digamos, cadena de caracteres, la base de datos utiliza varchar y el señor Java utiliza string. Listo. Esto es para entender un poco cómo, digamos, es la entrada. Vamos a darle aquí OK. Váyanse ahora a la salida en chinut, doble clic para ver la configuración. Y ojo a lo siguiente. En teoría, cuando yo conecto una entrada con un elemento de salida, en la mayor parte de las veces se sincroniza la entrada con la salida. Pero puede haber casos en que por error de la herramienta o por algún bug que tenga, no se hizo de forma correcta. Entonces, este señor, como al final va hacia una base de datos, también tiene un esquema. Por ejemplo, vamos aquí a editar el esquema a ver si lo conectó. Y aquí si hubo una conexión directa de la entrada con la salida. Aclaro que hay veces que haya unos pequeños errores. Ojalá que no salgan para ver en el caso real cómo hacíamos para resolverlo. Bueno, solamente era para indicar esa parte ahí, nada más que la entrada, normalmente se sincroniza con la salida. Estamos aquí entonces, ok, y hacemos un par de cositas ahora. Listo. Como lo que hicimos fue tomar la conexión de la base de datos y no tomamos una conexión hacia una tabla, note ahora que aquí hay un elemento que se llama, bueno, tengo el host, la característica de confirmación hacia la base de datos, pero tengo una sesión que dice table, ese table está vacío. ¿Por qué está vacío? Porque recuerden que yo todo hizo, fue lo que hice, fue tomar la conexión y no una tabla como tal. Entonces, vamos a hacer lo siguiente. Ahí donde está el table, colóquele el nombre y ahora en español llámelo artistas. Recuerde que como esto, Java tiene que estar entre las comillas dobles, porque va a ser un string de Java. Artista, llámela artista. Seguido, situése ahora donde dice el action on table que está debajo del table. Ese action on table por defecto está en default. Significa en que no va a hacer nada. Entonces, este action on table, cuando yo lo que es, yo voy a crear la tabla para que diga a Talyn, créame la tabla, entonces me toca modificarlo. Si ya la tabla está creada, lo dejo tal cual como está. Porque él no hace nada. Pero si la tabla no está creada, entonces amplía aquí ese combo box y tienes diferentes opciones. Una opción dice, elimine la tabla primero y después la creas. Otra opción te dice nada más crear la tabla. Otra opción, crear la tabla si no existe. Otra opción es eliminar la tabla si existe y crear. Porque esta es la opción, porque hay motores, como el caso de MySQL, si mi calcru no se falla, en los cuales tú intentas eliminar una tabla que no existe y te manda un error. Y está la otra opción que dice limpiar tabla, que sería al final un delete. Y está el truncate table. Recordarás que a nivel de base de datos yo tengo la opción de delete y la opción de truncar. Entonces truncar, si tú quieres borrar todos los datos, la mejor opción es que eso es un truncate porque lo que hace eso es lo que limpia al final son lo que llaman algunos marcas de agua, o sea muchas estadísticas que te quedan de esa tabla. Entonces el truncate table te borra todas las estadísticas de esa tabla, a diferencia del delete. Para esta opción vamos a hacer lo siguiente. Vamos a decirle al señor que cree la tabla si no existe. Significa en que la primera vez que no está la tabla creada se crearía y la segunda vez intento ejecutar este job, pues no crearía esa tabla como tal. Vamos ahora con el action on data. Este action on data lo que va a definir es la sentencia dml que se va a ejecutar en esta salida. Entonces date cuenta que tengo lo siguiente. Insert, update, insert or update, update o insert o borrar. ¿Qué quiere decir eso entonces? En que si yo coloco insert, los registros que van a llegar a esa salida significa que se van a insertar. Si la tabla ya tiene ya de primaria y tú intentas ejecutar dos veces este job, la segunda vez sale un error porque vas a intentar insertar registros cuya ya de primaria ya está. Ahora mira el caso, si yo cojo en vez de insert coloco update y los registros no están adicionados pues voy a tener un problema porque no puedo autorizar algo que no está hecho. Y lo demás, insert or update or update insert lo que define es un orden. ¿En qué va a hacer? ¿Qué va a hacer? Si tú coloco la opción insert or update lo primero que va a hacer es que va a intentar insertar. Si el registro ya está, actualiza. Si cojo update o insert primero actualiza y después si no, si el registro no está inserta. Eso es para grandes cantidades de datos en que tú sepas en lo que vas a agregar o lo que vas a actualizar. Entonces ahí al nivel de tiempo de respuesta cuando va a insertar o actualizar, es recomendable que entienda los datos y que definas en qué orden debes hacerlo primero. Si tú sabes que la mayor parte del registro que tú estás haciendo es un prove day, mejor coge update o insert porque es más rápido. Porque si lo coge al revés va a intentar insertar y después va a intentar actualizar. Entonces ahí vas a tener un problema. Deja nada más aquí insert, nada más el listo ya se nos está acabando prácticamente el tiempo. Vamos a ejecutar ahora para ver este job para ver si nos sale la tabla, a ejecutar. Ejecutamos entonces a ver ese job. Pendiente de que el ejecute el job correcto porque recuerde que hay un pequeño bug que entonces se ejecuta el anterior y listo. Perfecto. Ahí me dice que migró 59 filas en un tiempo de 2.36 segundos. En el caso particular mío entonces. Si ya terminó puede confirmar si todo está correcto de dos formas. Esperamos que algunos todavía están ejecutando. Si ya está correcto váyase al page admin si te desea. Le da aquí un refresh. Que el refresh aquí es clic derecho aquí hay una opción que dice refresh sobre la base de datos. Y a donde dice esquemas. Váyase a public y tables y ahí debe aparecer la tabla migrada. Le da clic derecho a la tabla y le dice ver datos. Y deberían aparecer las 59 filas que en teoría migró. Ahí es listo clic derecho nuevamente Catalina clic derecho en artista. Y ahí está view o edit data view busca la opción view o edit data y dale all row por favor. Clic ahí y ahí te ve aparecer. Listo ahí te aparece. El caso de Julio vamos a ver listo Julio. Exactamente Julio por ahí es all row y ahí tenemos el proceso de migración. Listo. Bueno quizás no necesitas esto para mirarlo ahora si lo queremos ver de talent. Voy a ver talent en un momento. Y recuerda vete a la conexión de Postgres y recuerda que por defecto yo no me traigo el esquema aunque tampoco estaba creado en el momento de la conexión. Dale clic derecho ahora a la conexión de Postgres y dile está el esquema. Que ya lo habíamos hecho con MySQL. Dale next aquí. Te va a aparecer Span de Chinut. Vete al esquema public y ahí está artista. Dale clic en publico en artista como tú quieras. Y ahí te va a traer esa tabla como tal. Finish. Y aquí te aparece esa tabla que no estaba anteriormente. Bueno jóvenes. Nos vemos el día de mañana. Esperamos que esta noche asocié los problemas técnicos. Ahí pido nuevamente disculpas. Pues espero que haya aprovechado cualquier duda que tenga. Me la hace saber. Y mañana continuamos con muchos temas que nos faltan con respecto a esto. Pero mañana creo que la mitad del tiempo lo voy a hacer. La mitad de la clase va a ser para talent integration. Tratar de hacer los ejemplos la mayor cantidad posible. Y después sigo con el talent ISB porque si no no nos alcanza entonces. Ahí vemos mañana cómo nos organizamos entonces. Les deseo pues un feliz resto de día. Y nos conectamos el día de mañana a las nueve horas México diez horas Colombia. Ha sido un placer y nos vemos entonces el día de mañana. Julio estaba levantando la mano. Acasualmente le estaba preguntando a le pregunté a Jimena. Y me dice que no yo. Mañana hay clases y me dice no yo en el miércoles porque es festivo en México. Entonces el festivo es mañana o es el miércoles? Sí yo le entendí eso a ella y me dijeron que era Marte. No, seguramente fue que se confundió ella. Entonces mañana no tenemos clases entonces. Nos seguiremos el día miércoles. Cierra y nada y esto se guarda automáticamente en el programa. Eso. Que pase muy bien listo. Bueno, feliz. Espero que mañana descanse que es lo principal y descanse con sus seres queridos. Porque es lo que nos queda entonces. Bueno, mañana pues nos vemos el día miércoles. Que pase muy buena tarde igualmente. Muy buena.
on 2024-09-30
Visit the Talend Open Studio para ESB / Data Quality course recordings page