sábado, octubre 15, 2011

Automatizar carga de datos en Pentaho

Tomado de: Automatizacion de Carga de Datos

Documentación del Usuario de Kitchen




¿Qué es Kitchen?

Kitchen es un programa que puede ejecutar trabajos diseñados con Spoon y almacenados como XML ó en el repositorio de base de datos. Generalmente los trabajos se programan en modo por lotes para ser ejecutadas en intervalos de tiempo regulares.

Instalación

El primer paso es la instalación de la máquina virtual (JRE) de Java de Sun Microsystems, versión 1.5 ó mayor. La misma puede ser descargada gratuitamente desde http://www.java.com/.
Luego de esto simplemente descomprima el archivo zip de PDI (por ejemplo pdi-ce-3.1.0-GA.zip) en el directorio que elija.
En ambientes de tipo Unix (Solaris, GNU/Linux, ...) será necesario asignar permisos de ejecución a los scripts de comandos. Desde dentro del directorio de PDI se puede utilizar el siguiente comando:
chmod +x *.sh

Iniciando Kitchen

Para inciar Kitchen en diferentes plataformas se proveen los siguientes scripts:
  • Kitchen.bat : ejecutar Kitchen en la plataforma Windows
  • kitchen.sh : ejecutar Kitchen en plataformas tipo Unix y OSX
Kitchen puede ejecutarse en cualquier plataforma que tenga una versión de la máquina virtual de Java 1.5 ó mayor.

Opciones de línea de comandos

Estas son las opciones de línea de comandos que puede utilizar.
NOTAS IMPORTANTES:
  • En el sistema Windows, el uso del guión ("-") en las opciones causa problemas, lo mismo que el signo igual ("="). A causa de ello a partir de la versión 2.2.2 puede utilizarse ese formato ó cualquier combinación de "/,-" y ":,=".
  • Es importante que si hay valores presentes en los valores de las opciones se utilicen comillas simples ó dobles para unirlos. Observe los ejemplos subsiguientes para más información.
/opcion:valor
Debajo se listan las opciones válidas.

Mostrar información de la versión

-version
Esta opción muestra la versión de la librería principal de PDI.
El número de versión de la compilación y la fecha de compilación se muestran también.

Ejecutar archivo XML (.kjb)

-file=nombredearchivo
Esta opción ejecuta el trabajo definido en el archivo XML (.kjb) indicado.

Establecer el archivo de log

-log=nombredearchivo
Indica el archivo donde guardar el log (por defecto se utiliza la salida estándar).

Establecer el nivel de log

-level=niveldelog
Esta opción establece el nivel de log para el trabajo que se ejecutará.
Estos son los posibles valores:
  • Error: Mostrar sólo errores
  • Nothing: No mostrar salida
  • Minimal: Información mínima
  • Basic: Información básica (seleccionado por defecto)
  • Detailed: Información detallada
  • Debug: Para corrección de errores, salida muy detallada
  • Rowlevel: Información a nivel de registro, puede generar una gran cantidad de datos

Seleccionar un repositorio

-rep="Nombre del Repositorio"
Conectar al repositorio con nombre "Nombre del Repositorio"
También será necesario especificar las opciones --user, --pass, --dir y --job.
(Esta opción tembién puede ser especificada mediante la variable de entorno KETTLE_REPOSITORY)

Establecer el nombre de usuario del repositorio

-user=nombredeusuario
Este es el nombre de usuario con el cual se conectará al repositorio.
(Esta opción tembién puede ser especificada mediante la variable de entorno KETTLE_USER)

Establecer la contraseña del repositorio

-pass=Contraseña
Esta es la contraseña utilizada para conectarse al repositorio.
(Esta opción tembién puede ser especificada mediante la variable de entorno KETTLE_PASSWORD)

Seleccionar la transformación del repositorio a ejecutar

-trans="Nombre de la transformación"
Esta opción permite seleccionar la transformación almacenada en el repositorio que se desea ejecutar

Listar los directorios del repositorio

-listdir=Y
Imprime un listado de todos los subdirectorios del directorio especificado mediante la opción "-dir".

Establecer el directorio del repositorio

-dir=/algun/directorio
Especifica el directorio del repositorio a utilizar. Algunos ejemplos:
  • El directorio raíz: /
  • Un subdirectorio: /produccion/Dimensiones/
Desde la versión 2.2.2, una barra ("/") se utiliza para separar directorios en todas las plataformas.

Listar las transformaciones del repositorio

-listtrans=Y
Imprime una lista de todas las transformaciones alojadas en el directorio del repositorio especificado mediante la opción "-dir".

Listar los repositorios disponibles

-listrep=Y
Imprime una lista de todos los repositorios definidos.

No acceder al repositorio

-norep=Y
Esta opción puede utilizarse si, a pesar de haber establecido las variables de entorno KETTLE_REPOSITORY, KETTLE_USER y KETTLE_PASSWORD, se desea evitar el acceso al repositorio (por ejemplo para ejecutar una transformación desde archivo XML).

Ruta

Por favor asegúrese de estar posicionado en el directorio de PDI antes de ejecutar los ejemplos listados abajo. Si utiliza estos scripts en un archivo por lotes ó en otro script, simplemente ejecute un cambio de directorio al directorio de instalación:
Si PDI estuviera instalado en Windows en el disco D:
D:

cd \PDI
Si PDI estuviera instalado en el directorio /product de un sistema tipo Unix:
cd /product/PDI/

Ejecutar una transformación desde un archivo

Este ejemplo ejecuta una transformación desde un archivo en plataforma Windows:
Kitchen.bat /file:"D:\Trabajos\Actualizar Warehouse.kjb" /level:Basic
Este ejemplo ejecuta un trabajo desde un archivo en plataforma tipo Unix:
kitchen.sh -file="/Trabajos/Actualizar Warehouse.kjb" -level=Minimal

Ejecutar un trabajo desde el repositorio

Este ejemplo ejecuta un trabajo desde el repositorio en plataforma Windows (Ingresar en sólo una línea sin retornos)
kitchen.bat
                    /rep:"Repositorio de producción"
                    /job:"Actualizar dimensiones"
                    /dir:/Dimensiones
                    /user:miusuario
                    /pass:pass123
                    /level:Basic

Redirigiendo salida

Si desea que la salida de la ejecución sea almacenada en un archivo de log en lugar de ser impresa por pantalla, puede utilizar redirección
Este ejemplo agrega la salida de Kitchen a un archivo de log incremental:
kitchen.sh -file="/trabajos/job.kjb" -level=Minimal >> /LOG/trans.log
Este ejemplo envía la salida de Kitchen a un archivo (que se sobreescribe cada vez):
kitchen.bat /file:C:\trabajos\jpb.kjb /level:Basic > C:\LOG\trans.log

Códigos de retorno

Kitchen devuelve un código de error basado en el resultado de la ejecución:
  • 0 : La transformación se ejecutó sin problemas.
  • 1 : Ocurrieron errores durante la ejecución.
  • 2 : Ocurrió un error inesperado durante la carga / ejecución de la transformación.
  • 3 : Imposible preparar e inicializar la transformación.
  • 7 : La transformación no pudo ser cargada desde el archivo XML ó el repositorio.
  • 8 : Error al cargar pasos ó complementos (generalmente error al cargar uno de los complementos)
  • 9 : Impresión del uso de la línea de comandos

Programación

Programar una transformación en Windows

La mejor forma de comenzar es probando el comando primero en línea de comandos. Luego puede utilizarse el Programador de Tareas de Windows para ejecutar el comando.
A partir de Windows 2000 existe una interfaz de usuario para realizar esta tarea, accesible desde el panel de control. Sin embargo también puede utilizarse la línea de comando de esta manera:
at 23:30 /every:Monday,Wednesday,Friday "D:\actualizar_dimensiones.bat"
Para ver una lista de los comandos programados simplemente ejecutar el comando:
at

Programar una transformación en Unix

La mejor forma de comenzar es probando el comando primero en línea de comandos. Luego puede utilizarse cron para ejecutar el comando. Esto puede hacerse ejecutando el siguiente comando:
crontab -e
Luego puede ingresarse el comando a ejecutar y el momento en que debe ejecutarse en una única línea en el archivo de texto que se presenta.
Las primeras opciones son:
  • El minuto de la hora, 0-59
  • La hora del día, 0-23
  • El día del mes, 1-31
  • El mes del año, 1-12
  • El día de la semana, 0-6, 0=Domingo
Puede especificarse un rango inclusivo de números separando dos números con un guión ("-"). Separando números con comas puede seleccionarse más de un valor específico. Si se utiliza un asterisco ("*") en lugar de un número, significa cualquier número posible para esa posición (cualquier minuto, cualquier día, etc.).
Por ejemplo, para actualizar dimensions a cada hora, a los 15 y a los 45 minutos de cada hora durante los días de semana, esta sería la línea a ingresar:
#
# Ejecuta la actualización de las dimensiones del almacén de datos
#
15,45 * * * 1-5 /PROD/actualizar_dimensiones.sh
#

No hay comentarios: