|

sábado, 27 de julio de 2013

Cambiando la ubicación de .kettle: Definir KETTLE_HOME

Kettle 

No siempre la ubicación por defecto del directorio .kettle (Ver mas sobre la carpeta .kettle) es la mas adecuada para un servidor de Pruebas o Producción. Si deseamos cambiar esta ruta, es necesario crear la variable de entorno KETTLE_HOME. A continuación explico los pasos para realizar estos cambios tanto en Windows como en Linux.

En Windows


En el explorador de Windows damos clic derecho sobre Equipo -> Propiedades -> Configuración Avanzada del Sistema

En la pestaña Opciones Avanzadas damos clic en el botón Variables de Entorno y luego en el botón Nueva ...

Creamos una variable con nombre KETTLE_HOME, cuyo valor será la ruta asignada para la configuración, en este caso c:\pentaho



Aceptamos y reiniciamos spoon.bat para que Pentaho tome los cambios.

En Linux

En este sistema operativo debemos editar algunos archivos de configuración y ejecutar algunos comandos, por lo que deberíamos tener acceso root.
Editar el archivo con ruta /etc/profile y agregar al final las siguientes línea:
KETTLE_HOME=/datos/pentaho/kettle/common
export KETTLE_HOME
Guardar el archivo y ejecutar el siguiente comando en una consola con permisos root.
source /etc/profile
Comprobar con el siguiente comando que la variable este asignada:
echo $KETTLE_HOME
    Ejecutar spoon.sh para que Pentaho tome los cambios.
      Hasta un próxima entrada, que sigan pasando un buen día.

      jueves, 25 de julio de 2013

      Migrando la Configuración de PDI: el directorio .kettle

      Traveling bags


      Es común que tengamos varios equipos de desarrollo, o que necesitamos migrar la configuración de Kettle desde un servidor de desarrollo a uno de pruebas o producción. Esta configuración incluye variables, conexiones compartidas a bases de datos y nuestros repositorios. Si algún día necesitan migrar esta configuración la siguiente información les puede resultar muy útil.

      Los archivos de configuración de Pentaho Data Integration los podemos ubicar bajo el directorio .kettle, el cual esta alojado en nuestra carpeta de usuario:

      En Windows (Vista, 7 y 8) -> C:\Users\NombreUsuario
      En Linux -> /home/NombreUsuario. 

      Para poder acceder a él es necesario tener habilitada la visualización de archivos ocultos. Si queremos un configuración idéntica basta con copiar todo el contenido de la carpeta a nuestra .kettle de la nueva máquina. Si queremos copiar solo ciertas configuraciones, tenemos tener claro el contenido de cada archivo:

      Los principales archivos de configuración que encontramos son:

      kettle.properties: Archivo que nos permite definir variables globales del aplicativo. Por ejemplo podemos crear una variable con el nombre de nuestro servidor de bases de datos, TEST_SERVER, y luego llamarla en nuestras transformaciones de la forma ${TEST_SERVER}. Así que si llegara a cambiar el nombre del servidor, simplemente debemos asignarle el nuevo valor en el kettle.properties y no modificar nuestras transformaciones y jobs.

      PRODUCTION_SERVER = hercules
      TEST_SERVER = zeus
      DEVELOPMENT_SERVER = thor
      SERVER_PORT = 1521
      SERVER_SCHEMA = TRANSACT
      


      shared.xml: En este archivo encontramos todas nuestras conexiones compartidas (Mas información en Configurando conexiones en Sppon). Si simplemente queremos copiar una conexión compertida, podemos identificarla dentro de las etiqueta <connection>, copiarla y pegarlo en el shared.xml de otra servidor con Pentaho. Las contraseñas de conexión en este archivo están encriptadas.


      <connection>
          <name>DATAWAREHOUSE</name>
          <server>localhost</server>
          <type>ORACLE</type>
          <access>Native</access>
          <database>xe</database>
          <port>1521</port>
          <username>DWAREHOUSE</username>
          <password>Encrypted 2be98fc8aa7bb38a2b8b58f1a79cff</password>
          <servername/>
          <data_tablespace/>
          <index_tablespace/>
          <attributes>
            <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
            <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
            <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
            <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
            <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
          </attributes>
        </connection>
      
      

      repositories.xml: Aparte de los archivos .ktr y .kjb, podemos crear las transformaciones y jobs en un repositorio de bases de datos. Si queremos acceder al repositorios desde varias computadores, es necesario tener definida tanto la conexión como el repositorio, que podemos identificar con las etiquetas <connection> y <repository> respectivamente.

      <repositories>
        <connection>
          <name>KREPOSITORY</name>
          <server>albafika</server>
          <type>ORACLE</type>
          <access>Native</access>
          <database>xe</database>
          <port>1521</port>
          <username>KREPOSITORY</username>
          <password>Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde</password>
          <servername/>
          <data_tablespace/>
          <index_tablespace/>
          <attributes>
            <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
            <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
            <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
            <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
            <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
          </attributes>
        </connection>
        <repository>    <id>KettleDatabaseRepository</id>
          <name>REPOSITORIO_DESARROLLO</name>
          <description>REPOSITORIO_DESARROLLO</description>
          <connection>KREPOSITORY</connection>
        </repository>
        </repositories>
      


      En una próxima entrada veremos como cambiar la ruta del directorio .kettle

      Dios los bendiga y exitos

      domingo, 7 de julio de 2013

      TIP SQL: Reemplazando caracteres especiales con ORACLE

      Griego


      Una de las grandes ventajas de Pentaho Data Integration, es que podemos elegir la mejor manera de realizar una tarea de transformación o limpieza de información: Realizándola directamente en la consulta SQL, traernos los datos y realizarla con un Step de Kettle o un Script Java-JavaScript.

      Hoy les muestro una sencilla consulta para reemplazar caracteres especiales de una columna en ORACLE apoyándonos en la función REGEXP_REPLACE.

      SELECT
        REGEXP_REPLACE(LA_COLUMNA, '[^A-Za-z0-9ÁÉÍÓÚáéíóú ]', '') AS COLUMNA
      FROM TABLA;
      
      

      Para realizar pruebas sin necesidad de tener una tabla propia nos podemos apoyar de la tabla DUAL.

      SELECT
        REGEXP_REPLACE('ANA MARIA R$$$""OJAS MARTÍNEZ(', '[^A-Za-z0-9ÁÉÍÓÚáéíóú ]', '') AS COLUMNA
      
      FROM DUAL;
      
      

      El resultado de esta consulta será:

      ANA MARIA ROJAS MARTÍNEZ

      SQL, JavaScript, Step de Kettle ...¿Cual es la mejor forma de hacerlo? Dependerá de nuestra experiencia, los recursos técnicos de nuestro SGBD y del servidor de procesamiento, así que les aconsejo probar varias opciones para encontrar la  más eficiente.

      ¡Hasta una próxima entrada!.

      jueves, 4 de julio de 2013

      Reemplazando caracteres especiales en KETTLE

      A regexp to match regexp
      El step Replace in String nos simplifica bastante la limpieza de información, y más, si se utiliza para realizar reemplazos utilizando expresiones regulares.  Tal vez queremos borrar los caracteres especiales de una cadena de texto (Al día de hoy la definición exacta de caracter especial sigue siendo una incógnita).  Sería engorroso escribir una regla, que reemplace por una cadena vacía cada carácter especial que existe.  En este caso sería mas fácil decirle que reemplace un conjunto de caracteres por la cadena vacía. Aquí es donde la expresiones regulares entran en el juego.

      Con una expresión regular básica podemos podemos definir un conjunto de caracteres. En la Internet encontramos una expresión regular muy común, la cual representa caracteres alfanuméricos:

      [0-9A-Za-z] 

      Esta expresión sería suficiente por ejemplo para representar nombres de personas en países anglosajones, pero como hispano parlantes, sería suficiente para representar nombres propios como ¿EDUARDO NUÑEZ RODRÍGUEZ? De nuestro idioma hacen parte diacríticos y la letra Ñ, así las tecnologías de la información estimulen su desuso.

      Así que mi versión de caracteres NO ESPECIALES (Incluyendo el espacio en blanco) sería la siguiente:

      [0-9A-Za-zÁÉÍÓÚáéíóúÑñ ]

      Entonces los caracteres ESPECIALES serían todos que aquellos que esten por fuera de este conjunto, y esto lo podemos hacer anteponiendo el caracter ^:

      [^0-9A-Za-zÁÉÍÓÚáéíóúÑñ ]

      Con una variación de esta expresión regular, podríamos en una sola instrucción del Replace in String, borrar todos los caracteres distintos a los especificados.

      Nuestra transformación constará simplemente de un Generate Rows para realizar un caso de prueba y un Replace in String:


      El paso Generate Rows, generará 10 filas, con la columna CADENA, todas con el valor a limpiar ANA@ M@RÍA #ROJAS HERNA&NDEZ''''''''''''''''


      El paso Replace in String, elegiremos realizar la operación sobre la columna CADENA, habilitamos la opción useRegEx (Y), en Search escribimos nuestra expresión regular [^0-9A-Za-zÁÉÍÓÚáéíóúÑñ ] y en Replace With dejamos vacío.


      Guardando la transformación y haciendo una previsualización, el valor en la columna CADENA quedó como ANA MRÍA ROJAS HERNANDEZ.


      Al cambiar la expresión regular por [0-9A-Za-zÁÉÍÓÚáéíóúÑñ ] obtendremos el resultado contrario:


      Podemos cambiar nuestra expresión para aceptar otros caracteres comunes como el ampersand (&) o la cedilla (Ç), o utilizar la expresion [^0-9] para borrar todos los caracteres no numéricos. Les aconsejo el siguiente link http://www.w3schools.com/jsref/jsref_obj_regexp.asp para conocer un poco más de las Expresiones Regulares.

      ¡Exitos y Buena Suerte!


      ..

      Related Posts Plugin for WordPress, Blogger...