SAT-LIN009-IBM InfoSphere DataStage
SAT-LIN009-IBM InfoSphere DataStage
SAT-LIN009-IBM InfoSphere DataStage
InfoSphere DataStage
División de Tecnología
Subgerencia de Arquitectura
2021/01/26
TABLA DE CONTENIDO
1 Control del Documento .......................................................................................................................... 4
1.1 Historia de Cambios ...................................................................................................................... 4
1.2 Revisiones ..................................................................................................................................... 4
1.3 Referencias.................................................................................................................................... 4
2 Introducción ........................................................................................................................................... 5
2.1 Objetivo.......................................................................................................................................... 5
2.2 Alcance .......................................................................................................................................... 5
2.3 Público Objetivo ............................................................................................................................. 5
3 Conceptos Básicos ................................................................................................................................ 6
3.1 Glosario ......................................................................................................................................... 6
3.1.1 Jobs Paralelos ....................................................................................................................... 6
3.1.2 Jobs Secuenciales ................................................................................................................. 6
3.1.3 Links ...................................................................................................................................... 6
3.1.4 Proyecto ................................................................................................................................. 7
3.1.5 DataSet .................................................................................................................................. 7
3.1.6 Sequential File ....................................................................................................................... 7
4 Lineamientos ......................................................................................................................................... 8
4.1 Diseño ............................................................................................................................................ 8
4.1.1 Arquitectura de Infraestructura para los ambientes de Calidad y Producción ...................... 8
4.1.2 Patrones ETL permitidos en DataStage ................................................................................ 9
4.1.3 Proyecto ............................................................................................................................... 10
4.2 Desarrollo .................................................................................................................................... 11
4.2.1 Diseño del proceso .............................................................................................................. 11
4.2.2 Orden general de Construcción ........................................................................................... 11
4.2.3 Documentación de Jobs ...................................................................................................... 11
4.2.4 Parametrización de Job’s .................................................................................................... 12
4.2.5 Parametrización de valores de conexiones de BD desde los Job’s .................................... 13
4.2.6 Variables Globales Envió Correo ........................................................................................ 13
4.2.7 Variables Globales FTP ....................................................................................................... 13
4.2.8 Parametrización de rutas de archivos en los proyectos ...................................................... 14
4.2.9 Inclusión de parámetros a nivel de Stages ......................................................................... 14
4.2.10 Uso de Tablas Lookup ......................................................................................................... 15
4.2.11 Uso de Partitioning .............................................................................................................. 16
4.2.12 Uso de Columnas ................................................................................................................ 18
1.2 Revisiones
Versión Revisado por Cargo/Área Fecha
1.0 Carlos David Bernal Pérez Arquitecto de Estrategia – Subgerencia de 2021/01/26
Arquitectura
1.3 Referencias
Título del Documento Ubicación en SharePoint Subgerencia de Arquitectura
Lineamientos IBM InfoSphere ../01.Gobierno/06.Lineamientos/ SAT-LIN009- IBM InfoSphere DataStage
DataStage
2.1 Objetivo
Como parte de la política del buen uso de los recursos y la estandarización de los desarrollos que se
realizan en cada una de las herramientas sobre las cuales se soportan los procesos de negocio llevados a
cabo al interior del Banco, este documento brinda las bases y lineamientos a considerar en cada una de
las implementaciones a realizarse sobre la herramienta ETL, llamada IBM InfoSphere DataStage.
2.2 Alcance
Definición de componentes, lineamientos de diseño y lineamientos de desarrollo de la herramienta.
3.1 Glosario
3.1.1 Jobs Paralelos
Este tipo de Jobs son los permiten realizar procesos de (ETL), pueden contener diferentes stage que
realizan las operaciones requeridas en el proceso de integración de datos. Se debe tener en cuenta que
los Jobs tienen stages de Origen de datos (entrada), stages para realizar las transformaciones necesarias
y stages para cargar el destino de datos (Salida). Los Jobs pueden tener varias entradas de datos y varias
salidas.
3.1.3 Links
Los enlaces (Links) unen los diversos stages de un job y se utilizan para especificar cómo fluyen los datos
cuando se ejecuta el job.
El tipo de link que utilice depende de si el link es de entrada o de salida, y de los stages que está enlazando.
Los job paralelos admiten tres tipos de links:
3.1.4 Proyecto
Los proyectos son una forma de organización para los diferentes procesos de integración de datos,
permiten agrupar definiciones de tablas, tipos de datos, archivos, Jobs y rutinas. Los proyectos pueden
contener uno o varios Jobs, todos los elementos se pueden agrupar de forma lógica y organizar en
carpetas.
Se puede definir seguridad a nivel de proyecto, teniendo en cuenta que solo los usuarios que estén
autorizados para el proyecto puedan acceder a los diferentes Jobs.
3.1.5 DataSet
Archivo físico que mantiene particionamiento y lectura múltiple.
4.1 Diseño
4.1.1 Arquitectura de Infraestructura para los ambientes de Calidad y Producción
• Se realizará balanceo a los nodos WAS desde el F5, este componente cuenta con la configuración
necesaria y además el proveedor del componente certifica que puede realizar estas funciones.
• Los servidores WAS se comunican con los servidores Engine.
• Para la administración de los nodos WAS, se realiza la instalación de “dmgr” activo pasivo en los
nodos de WAS, el “dmgr” tendrá un disco compartido con tecnología “GPFS”, en este disco solo
se instala lo referente al “dmgr” no se debe instalar producto.
• Teniendo en cuenta las características del producto, la comunicación a los diferentes repositorios
de metadatos, se realiza desde los servidores WAS teniendo en cuenta la configuración del
producto InfoSphere.
• El “clúster de datos” va a conectar a la basa de datos Stage, con el esquema “ADMSTAGE”, el cual
se tomará como un área temporal de trabajo.
• La capa de Engine, debe tener IP flotante y Host Virtual.
• Los nodos de Engine van a tener un Orquestador instalado en activo y otro en pasivo, en caso de
que el activo falle se moverán e iniciaran los servicios en el que está en pasivo.
• Se debe tener un disco compartido para la instalación entre los nodos de Engine.
• Por requerimientos del producto, los nodos de Engine deben tener instalados los clientes de las
diferentes tecnologías de bases de datos en caso de requerir acceso a las mismas.
• Por requerimiento del producto los nodos de Engine deben tener acceso a los servidores donde se
alojan las bases de datos de las diferentes fuentes y destino que se requiera en los procesos ETL.
• E-T-L
Usado para realizar la extracción, transformación y cargue de información desde una fuente a un
destino final. La siguiente grafica presenta las etapas de este modelo.
Ejemplo.
• E-L
Usado para realizar la extracción y cargue de información desde una fuente a un destino final. Este
modelo realiza la carga de la información al destino sin realizar ningún tipo de modificación o
validación.
La siguiente grafica presenta las etapas del modelo.
Fuentes Destino
Ejemplo.
4.1.3 Proyecto
1. Se creará un proyecto por sistema, contenido en el inventario de aplicaciones del Banco, que sea objeto
destino de procesos ETL.
2. Un proyecto contiene los Jobs que integran datos hacia la aplicación determinada por el nombre del
proyecto. Así, el proyecto PRY_ODS contendrá los desarrollos cuyo destino es el ODS.
3. Los desarrollos se agruparán en la carpeta Jobs del proyecto. Dentro de esta carpeta, se creará una
subcarpeta por sistema fuente de datos de los procesos ETL, o una subcarpeta por requerimiento,
dado por su CQ, en caso de que el proceso tenga varias fuentes.
4. Los proyectos Datastage deberán incorporar una estructura jerárquica para el almacenamiento del
proyecto en disco, los cuales estarán diferenciados por área temática que describa los distintos tipos
de usos:
dsdata
/workspace/ds/data/#NOMBREDEPROYECTO#/Entrada
/workspace/ds/data/#NOMBREDEPROYECTO#/Salida
/workspace/ds/data/#NOMBREDEPROYECTO#/LOG
/workspace/ds/data/#NOMBREDEPROYECTO#/DAT
/workspace/ds/data/#NOMBREDEPROYECTO#/Rutina
/workspace/ds/data/#NOMBREDEPROYECTO#/TMP
dsproject
/workspace/ds/project/#NOMBREDEPROYECTO#/
dsapp
/workspace/ds/app/#NOMBREDEPROYECTO#/SHL
/workspace/ds/app/#NOMBREDEPROYECTO#/SQL
/workspace/ds/app/#NOMBREDEPROYECTO#/CNF
/workspace/ds/app/#NOMBREPROYECTO#/PRG
Dónde:
/ds/data: Contendrá los datos temporales que requieren las ETLs para su funcionamiento.
/ds/project: Contiene los DSX del proyecto que corresponde a los códigos generados en DataStage.
/ds/app: las aplicaciones extras que usará el proyecto para funcionar correctamente, como son
llamadas a shell script, invocaciones de SQL, archivos de configuraciones y programas externos.
5. NOMBREDEPROYECTO: será una variable local del proyecto.
6. En la máquina se creará un directorio con el nombre del proyecto y dentro de esta se deben crear las
carpetas que se configuraron en la aplicación. (Data, Controls, Temp, etc.)
7. En la instalación de rutinas se deberá crear una carpeta con el nombre del módulo general y en ellas
se instalarán las rutinas que correspondan a este tipo de proyectos. Ver la siguiente figura:
Nota.
Si en los stage tienen condiciones o características especiales estas se deben documentar en la
descripción general del mismo.
*Nótese en la imagen arriba que se cruzan 300 millones de registros (link principal/stream) con una
referencia de 300 mil registros (link reference), a una velocidad promedio de 900 mil registros por
segundo, se recomienda emplear siempre Entire en el link de referencia.
* El LookUp deberá emplearse en nuestros cruces con entidades MINOR, representando dicha
MINOR el link de referencia.
Si duda del particionamiento emplee (Auto), como se muestra, note bien el recuadro en los links
de entrada al Stage, simbolizan el método de particionamiento Auto:
Si posee claridad sobre el particionamiento y la llave a emplear, particione los links de entrada a
los stages como Hash o Modulus por la misma llave que se hará el Join, ordenamiento o remoción
de duplicados; de esta manera DataStage no tendrá que hacer la gestión de selección automática.
Tenga en cuenta que se hace un Reparticionamiento cuando los links entrantes estén como se
muestra en la siguiente imagen:
*Nota: El punto 1. anteriormente descrito también aplica para otros stage, como por ejemplo el
Merge.
*Nota: Siempre y cuando el stage transformer se use de manera paralela, no será necesario
particionarlo, en caso se requiera ejecutarlo de manera secuencial, se recomienda particionar.
Consideraciones:
• La tecnología debe estar acompañada de la versión.
El parameter set no debería tener valores default solo los datos que se manejen en los ambientes.
Las siguientes imágenes presentan la configuración básica de un Parameter Set.
Nota. Un parameter set puede tener valores default solo cuando haga referencia a una variable global y se
defina el valor con $PRODEF
TENGA PRESENTE QUE ESTÁ ROTÚNDAMENTE PROHIBIDO modificar el paquete genérico por parte
de los desarrolladores.
El uso del paquete genérico no es obligatorio para todos los casos y dependerá de si su uso agrega
complejidad y si aporta valor a la solución. En la tabla a continuación se define de manera general cuándo
Los procesos de cargue del ODS se deberán desarrollar de tal manera que las precedencias del proceso
se carguen en bloque, posteriormente se realizaran las transformaciones correspondientes y finalmente los
cargues. Para tener control de cuál proceso ya se ejecutó y poder reestablecer la ejecución desde el punto
Invocation Id: permite identificar plenamente la instanciación del proceso que invocará al genérico y
adicionalmente según la naturaleza del desarrollo le brindará un consecutivo por fecha y hora de ejecución
para ello se usa en un USER VARIABLE ACTIVITY el parámetro #UVA_HORA.Hora# que básicamente
contiene el nombre del sequence desarrollado junto a la fecha y hora del sistema en tiempo de ejecución
(aclaración, esto va condicionado al requerimiento). Se pretende además que CARGAR TABLA o CARGAR
PLANO conserven dicho Invocation Id en el posterior paso asociado a VAP_COMANDO.
VAP_COMANDO: parámetro que guiará la ejecución del genérico
SEQ_GEN_INVOCAR_PAQ_GENERICO, allí se debe consignar la cadena de invocación:
"(cd $DSHOME/bin &&./dsjob -run -jobstatus -param VAG_CTL_PARAMETROS=":'"':"":'"':" -param
VAG_NOMBRE_RECURSO=":'"':"":'"':" -param
VAG_CTL_NOMBRE_DESTINO=":'"':"SEQ_STG_DS_FCT_PLAN_PAGOS_ACTIVOS":'"':"
PRY_CTL_GENERAL
SEQ_CTL_CARGAR_TABLA.SEQ_STG_DS_FCT_PLAN_PAGOS_ACTIVOS":UVA_HORA.Hora:")"
SEQ_STG_DS_FCT_PLAN_PAGOS_ACTIVOS -> Reemplace por el nombre de su proceso y/o sequence
correspondiente
SEQ_CTL_CARGAR_TABLA -> Puede cambiarlo si requiere CARGAR PLANO, basta con reemplazar por
SEQ_CTL_CARGAR_PLANO y de esa manera empleará el genérico que llama al proceso BOCC que
realiza el proceso mediante CARGAR PLANO y así realizar transferencia FTP del archivo plano resultante
de su proceso.
ADMSTAGE.STG_TBL_CONTROLCARGUE
ADMSTAGE.STG_TBL_CONTROLFTP
Obligatori Defaul
Nombre Columna Tipo de dato Descripción
o t
Nombre del archivo o de la
tabla destino, debe ser igual
VARCHAR2(80) Si al nombre del paquete que
genera el archivo, sin el
STR_NOMBRE_DESTINO prefijo ‘PAQ’
Tipo del cargue
VARCHAR2(80) No
STR_TIPO_CARGUE DELTA/FULL
Nombre del archivo
VARCHAR2(80) Si
STR_NOMBRE_ARCHIVO principal
Nombre del archivo en
VARCHAR2(80) No
STR_NOMBRE_ARCHIVO_FULL cargue FULL
STR_NOMBRE_ARCHIVO_DEL Nombre del archivo en
VARCHAR2(80) No
TA cargue DELTA
Dirección IP del WSFTP
VARCHAR2(80) Si
STR_DIRECCION_IP donde se realiza el cargue
Nombre de usuario en la
VARCHAR2(80) Si
STR_NOMBRE_USUARIO conexión FTP
Contraseña para conexión
VARCHAR2(80) Si
STR_PALABRA_CLAVE FTP, cifrada
VARCHAR2(11
Si Ruta de archivos FTP
STR_RUTA_FTP 0)
Ruta en el workspace de
VARCHAR2(80) Si
STR_RUTA_ETL Datastage
NUM_REGLA_FECHA NUMBER Si Número para regla de fecha
STR_DESCRIPCION VARCHAR2(80) No Descripción del archivo
Indica si el archivo viene o
VARCHAR2(80) No 'NO' se debe generar cifrado
STR_CIFRADO (SI/NO)
Indica si el archivo es de
VARCHAR2(80) No
STR_TIPO_PLANO ENTRADA o de SALIDA
Indicador para comprimir
VARCHAR2(80) No 'NO'
STR_COMPRIMIR SI/NO
Indicador para auditar
VARCHAR2(80) No 'NO'
STR_AUDITAR SI/NO
DTM_FCHA_CARGUE DATE No Fecha del último cargue
Valida si el nombre del
VARCHAR2(80) Si 'NO' archivo de salida es
STR_NOMBRE_DINAMICO dinámico, si es así se toma
Los valores de los distintos parámetros serán almacenados en un archivo plano de inicialización que deberá
estar protegido en el servidor donde residen los Jobs de DataStage, este archivo estará configurado
teniendo en cuenta los respectivos ambientes (Desarrollo, Calidad y Producción).
Basado en la clasificación anterior, se hacen las siguientes recomendaciones para el cargue de datos:
Flujo de trabajo
1. El Desarrollador trabaja el código en su equipo de manera local y genera los export.DSX con
ejecutables, diseños y todos los componentes propios de la ETL, no solamente los modificados.
2. El Desarrollador carga los DSX en la carpeta destinada para desarrollo del Servidor de
Versiones SVN.
3. El Administrador de DataStage tomará la última versión del SVN-desarrollo y cargará en SVN-
calidad, luego solicitará a Infraestructura el despliegue en ambiente de calidad.
4. Infraestructura descarga código del SVN-calidad y despliega en ambiente de Calidad.
5. Una vez certificado el desarrollo, el Administrador de DataStage tomará la última versión de
SVN-Calidad y cargará en SVN-Producción, luego solicitará a Infraestructura el despliegue en
ambiente de Producción.
6. Infraestructura realiza despliegue desde SVN-Producción a ambiente Productivo.
4.3 Nombramiento
El nombramiento de objetos en DataStage debe cumplir el siguiente estándar:
4.3.1 Proyecto
PRY_XXXX
XXXX: describe la aplicación destino de los procesos ETL del proyecto. Ejemplo PRY_ODS. Un proyecto
agrupa los desarrollos cuyo destino es el sistema usado como descriptivo
4.3.2 Carpetas
Abreviatura del sistema fuente, o del requerimiento: Las carpetas son contenedores de objetos, así que se
deben usar nombres descriptivos.
XXXX: es el nombre del flujo final que carga. Se pueden usar abreviaturas cuando se refiera al área staging
o al área destino.
Ejemplo:
• SEQ_SF_PLANO_MR: genera un archivo con la información de multiregistros.
• SEQ_FCT_SALDOS_CONTABLES: carga la tabla de ODS FCT_SALDOS_CONTABLES
SEQ_ + Archivo o Tabla (Principal) Destino.
Cuando el job realiza una actividad de carga de información, no es obligatorio especificar la actividad.
En cada Job se debe identificar con el nombre del archivo o tabla destino, y si es más de un archivo o tabla
destino, se debe especificar el Host/Archivo o tabla principal.
Ejemplos:
• JOB_DIM_OPERACION_COMEX_01: es el segundo job paralelo que carga datos en la
DIM_OPERACION_COMEX
• JOB_DS_FCT_RELACION_PRESTAMOS_MR: job que crea un archivo DS con la información
extraída de la FCT_RELACION_PRESTAMOS, relacionada con multiregistros.
JOB_ Archivo / Tabla (Principal) Destino+ consecutivo.
4.3.6 Procedimientos
PRC_XXXX
4.3.9 Stages
Los Parallel o Sequence Jobs están compuestos por Stages, cuyos nombres deben tener los prefijos que
se listan a continuación:
Filter FIL_[Nombre]
FTP FTP_[Nombre]
Funnel FUN_[Nombre]
Join JN_[Nombre]
LookUp LKP_[Nombre]
Merge MER_[Nombre]
Modify MOD_[Nombre]
Pivot PIV_[Nombre]
Switch SWT_[Nombre]
Container CONT_[Nombre]
Sybase SYB_[Nombre]
Teradata TER_[Nombre]
Sequencer SEQ_Nombre