Sunteți pe pagina 1din 34

LATAM AIRLINES GROUP.

Patrn de Diseo
ELT
Arquitectura Corporativa LATAM
Versin 1.0 - 08/01/2015
Versin 1.4 06/07/2015

Documento - Versin 1.4

CONTROL DE LAS MODIFICACIONES


Versin
1.0

Descripcin
Autor
Construccin del documento Sergio Vergara
para TERADATA

Fecha
201501-12

1.1

Se complementa con template Cristin Yez


para ORACLE y SQL*Loader

201501-21

1.2

Nueva
organizacin
Documento.

1.3

Se complementa para normar Guillermo Ordenes


uso para cargas multi hebras
Gloria Appelgren
con SQL Loader

15-062015

1.4

Revisin y modificacin de Cristian Yaez


nomenclatura
Gloria Appelgren

06-072015

Patrn de diseo ELT Patrn de


diseo ELT

del Gloria Appelgren

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

10-052015

Revisado por
Gloria Appelgren
Vincent Beghin
Sergio Vergara
(TDT)
Gloria Appelgren
Salvador Jofr
Guillermo
Ordenes
Vincent Beghin
Vincent Beghin
Cristian Yaez
Salvador Jofr
Guillermo
Ordenes
Vincent Beghin

Pgina 1 de 33

ndice de Contenidos
1.

INTRODUCCIN ................................................................................................................. 4

2.

ALCANCE ........................................................................................................................... 4

3.

TERADATA ......................................................................................................................... 5

3.1.

INTRODUCCIN TDT......................................................................................................... 5

3.2.

ALCANCE TDT ................................................................................................................... 5

3.3.

DETALLE TEMPLATE TDT ............................................................................................... 5

3.3.1.

Archivo de entrada delimitado | ............................................................................. 5

3.3.2.

Archivo de entrada de ancho fijo .............................................................................. 9

3.4.

Evidencia de ejecucin ................................................................................................... 11

3.4.1.

Proceso archivo delimitado. .................................................................................... 11

3.4.2.

Proceso Archivo Largo Fijo ..................................................................................... 12

3.5.

BTEQ Insert desde Staging a Histrico ........................................................................ 13

3.6.

BTEQ Regla Negocio (Insert table temporal). .............................................................. 15

3.7.

BTEQ Carga ODS (Insert desde tabla temporal a Tabla final ODS). .......................... 16

4.

ORACLE ........................................................................................................................... 18

4.1.

INTRODUCCIN Oracle .................................................................................................. 18

4.2.

ALCANCE Oracle ............................................................................................................. 18

4.3.

Formato de archivos ....................................................................................................... 18

4.4.

DETALLE TEMPLATE...................................................................................................... 18

4.4.1.

Archivo de entrada delimitado ................................................................................ 18

4.4.2.

Archivo de entrada de ancho fijo ............................................................................ 21

4.4.3.

Archivo de parmetros. ............................................................................................ 22

4.4.4.

Ejecucin del proceso. ............................................................................................. 22

4.5.

Evidencia ejecucin ........................................................................................................ 23

4.5.1.

Proceso archivo delimitado. .................................................................................... 23

4.5.2.

Proceso Archivo Largo Fijo. .................................................................................... 25

4.6.

Normas Cargas Multi Hebras con SQL Loader ............................................................ 27

5.

ESCENARIOS DE USO Y CONTROL DE PROCESOS .................................................. 29

5.1.

Primer Escenario ............................................................................................................. 29

5.2.

Segundo Escenario ......................................................................................................... 30

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 2 de 33

6.

DIRECTORIOS LANDING para ORACLE SQL*LOADER ........................................... 33

7.

RESOLUCIN DE CONTROVERSIAS ............................................................................ 33

Links importantes de documentacin complementaria:

1. Estndar de Manejo de Histricos: EMH


2. Estndar de Construccin Objetos DB: ECODB
3. Estndar de Construccin de Sentencias SQL: ESQL
4. Validacin MDC en Detalle: VMDC
5. Estndar de Construccin BTEQ. EBTEQ
6. Estndar DataStage. EDST
7. Polticas de Procesamiento DataStage: PPDST
8. Estndar Pentaho. EPTHO
9. Polticas de la Plataforma Teradata. PPTT
10. Estndares de Desarrollo Plataforma Teradata. EDPTT

Nota: para acceder a los links debe estar dentro de la Red LAN

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 3 de 33

1. INTRODUCCIN
El siguiente documento tiene por objetivo indicar los patrones de diseo para la extraccin,
carga y transformacin (ELT) para el Datawarehouse en TERADATA, mediante la utilizacin del
protocolo de carga Teradata Parallel Transporter (TPT) y BTEQ. Y adems, establecer las
definiciones orientadas a la optimizacin de cargas masivas en Bases de Datos Oracle mediante
SQL*Loader.
2. ALCANCE
Este documento incorpora el estndar y template de desarrollo para aplicaciones con TPT,
BTEQ en el caso de Teradata y SQL*Loader en caso de Oracle. Contempla las definiciones de
los parmetros requeridos para realizar cargas o exportaciones masivas en los sistemas
Teradata y Oracle.
El documento se separa en definiciones para TERADATA y ORACLE en el contexto ELT.
El documento finaliza con los escenarios de uso, configuraciones de directorios para rea
landing y diagramas de control de procesos.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 4 de 33

Teradata
(Aplica desde TDT Versin 14.10 en adelante)

3. TERADATA
3.1. INTRODUCCIN TDT
El siguiente documento tiene por objetivo indicar los patrones de diseo para la extraccin,
carga y transformacin (ELT) orientada a la carga ptima de Datawarehouse asociado al
proyecto World Class BI (WBCI), en TERADATA, mediante la utilizacin del protocolo de carga
Teradata Parallel Transporter (TPT).
3.2. ALCANCE TDT
Este documento posee como alcance el poder entregar un template de desarrollo para
procesos TPT, Bteq y con la definicin de los parmetros bases a tener en consideracin, pero
no posee como alcance la arquitectura definitiva a utilizar en el proyecto WCBI, ni el diseo de
los procesos que puedan invocar dichas TPT. Esto debe ser revisado en base a la definicin
funcional del Warehouse, por ejemplo validar si puede poseer reproceso, vigencia,
severidades, etc.
3.3. DETALLE TEMPLATE TDT
3.3.1. Archivo de entrada delimitado |
El patrn de adquisicin ser implementado mediante la utilizacin del protocolo LOAD
mediante un Job TPT, y a travs de BTEQ para la carga sobre la tabla histrica del proceso.
El template TPT, permite ser reutilizado como base para la creacin de los procesos TPT, y
posee un ejemplo de cmo leer un archivo fuente delimitado por el caracter |, y
cargando la informacin sobre una tabla destino en Staging.
En dicho proceso las tablas de work, log y error, sern creadas en base al parmetro
PRMU_NOMBRE_TABLA que debe ser informado en la invocacin del proceso, dicho
parmetro es el nombre de la tabla destino, la cual ser eliminada, al igual que sus tablas
de trabajo, log y error, al momento de la ejecucin, y ser creada en el mismo proceso, por
lo que se debe indicar la estructura.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 5 de 33

Modificaciones a realizar en el archivo Template:

Por cada nuevo proceso TPT, se debe crear un nuevo archivo TPT en base al template,
cuya nomenclatura para el nombre es:
TPT_LOAD_ AcrnimoORIGEN _DATABASE _TABLE _DELIM.tptload
Ejemplo: TPT_LOAD_FBIP_WCBI_RESERVAS_DELIM.tptload

Cambiar el nombre del Job por un proceso nico sobre la definicin DEFINE JOB
Ejemplo: DEFINE JOB load_TEST

En este nuevo archivo TPT, se debe modificar la definicin de la estructura del archivo
fuente DEFINE SCHEMA esquemaLectura
Ejemplo de valores a cambiar:
DEFINE SCHEMA esquemaLectura
(
CAMPOID VARCHAR(260)
CAMPOVALOR VARCHAR(100)

Modificar la creacin de la tabla de destino, bajo la definicin del paso STEP


SETUP_TABLES
Ejemplo de valores a cambiar:
STEP SETUP_TABLES
(
APPLY
(drop table || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'; '),
('drop table ' || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_e1; '),
('drop table ' || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_e2; '),
('drop table ' || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_log; '),
('CREATE MULTISET TABLE ' || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||',
NO FALLBACK,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
CAMPOID VARCHAR(10) NOT NULL,
CAMPOVALOR VARCHAR(100))
PRIMARY INDEX ( CAMPOID );')

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 6 de 33

Modificar la sentencia de insercin de los registros bajo el paso cargaTablaSTG


Ejemplo de valores a cambiar:
STEP cargaTablaSTG
(
APPLY
('INSERT INTO ' || @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'(
CAMPOID,
CAMPOVALOR
)
VALUES
(
:CAMPOID,
:CAMPOVALOR
);'
)

Modificar la sentencia de insercin de los registros bajo el paso operadorLectura


Ejemplo de valores a cambiar:
operadorCargaStaging[@PRMF_INSTANCIA_CARGA]
ATTRIBUTES
(
UserName = @PRMF_TERA_USER_STG,
UserPassword = @PRMF_TERA_PASS_STG,
LogTable = @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_log',
ErrorTable1 = @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_E1',
ErrorTable2 = @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT||'_E2',
TargetTable = @PRMF_TERA_DB_STG||'.'||@PRMU_TB_INPUT,
MaxSessions = @PRMF_MAX_SESSION,
TdpId = @PRMF_TERA_HOST
)
)
SELECT
CAMPOID,
CAMPOVALOR
FROM OPERATOR
(
operadorLectura[@PRMF_INSTANCIA_LECTURA]

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 7 de 33

Parametro
PRMF_TERA_HOST

Observacion
IP/DNS maquina Teradata
Usuario Teradata de conexin con
PRMF_TERA_USER_STG
permisos de carga en Staging
Clave Usuario Teradata de conexin
PRMF_TERA_PASS_STG
con permisos de carga en Staging
PRMF_TERA_DB_STG
Nombre base de datos Staging
PRMF_TERA_DB_TMP
Nombre base de datos Temporal
Cantidad mxima sesiones a utilizar
PRMF_MAX_SESSION
por el protocolo de carga
Cantidad mnima sesiones a utilizar
PRMF_MIN_SESSION
por el protocolo de carga
Cantidad de Horas que podr el
proceso esperar en casos de full uso
PRMF_TENACITY
de sesiones
Cada cuanto minutos el proceso
PRMF_SLEEP
revisara si se liberaron sesiones
Directorio para almacenar archivos
PRMF_DIR_ERROR
de error
Directorio para almacenar archivos
PRMF_DIR_LOG
de LOG
PRMF_PATH_DAT
Directorio con informacion fuente
Cantidad instancias de lectura de
PRMF_INSTANCIA_LECTURA fuente
PRMF_INSTANCIA_CARGA
Cantidad instancias de carga
Cantidad mxima sesiones a utilizar
por el protocolo de carga con TPT,
Multiload, FastLoad (usr_o_*). Este
est controlado por los 30
concurrentes en TASM. Para
identificar small/mdium/large
identificarlo en QueryBand. Ms de
5 no garantiza una mejora
PRMF_MAX_SESSION
significativa en los procesos.
Cantidad mnima sesiones a utilizar
PRMF_MIN_SESSION
por el protocolo de carga
Cantidad de Horas que podr el
proceso esperar en casos de full uso
PRMF_TENACITY
de sesiones
Cada cuanto minutos el proceso
PRMF_SLEEP
revisara si se liberaron sesiones

Patrn de diseo ELT Patrn de


diseo ELT

Ejemplo
57.228.128.8
Usr_o_stg
XXXXX
ODS_STG
ODS_TMP
5
1

4
6
'/export/home/dsacsmlg/TPT/ERR/'
'/export/home/dsacsmlg/TPT/LOG/'
'/export/home/dsacsmlg/TPT/DAT/'

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

5
2

1-5
1

0-4
1-6

Pgina 8 de 33

Formato Ejecucin

Tbuild f archivo_tpt v archivo_parametros u variables_del_proceso


Nombre_del_job_en_archivo_tpt

Ejemplo:
tbuild -f /export/home/dsacsmlg/TPT/SHL/TPT_LOAD_ESTANDAR_STG_DELIM.tptload -v
/export/home/dsacsmlg/TPT/CNF/config.ini -u "PRMU_NOMBRE_TABLA='TEST',
PRMU_FILE_INPUT=' DETALLE.TXT'" TEST

3.3.2. Archivo de entrada de ancho fijo


Para la lectura de archivos con formato de largo fijo, se utiliza un archivo tmplate TPT
igual al del ejemplo anterior, con la diferencia de la definicin del formato de lectura y los
campos definidos como esquema de lectura, dichos campos soportan solo
CHAR/ANSIDATE.
El archivo template preparado para archivos de ancho fijo es:
TPT_LOAD_ESTANDAR_STG_LARGO_FIJO.tptload
Para utilizar este archivo tmplate en nuevos desarrollos, se deben modificar las lneas de
esquemas y tablas destino indicado en el punto 1.1 archivo delimitado.
Ejemplo ejecucin:
tbuild -f /export/home/dsacsmlg/TPT/SHL/TPT_LOAD_ESTANDAR_STG_LARGO_FIJO.tptload
-v /export/home/dsacsmlg/TPT/CNF/config.ini -u "PRMU_TB_INPUT='TEST_VAR',
PRMU_FILE_INPUT='4M051814.DAT'" load_TEST_VAR

Adicionalmente se debe:

Modificar el paso DEFINE SCHEMA esquemaLectura


Ejemplo de valores a cambiar:
DEFINE SCHEMA esquemaLectura
(
CAMPOID CHAR(2),
CAMPOVALOR CHAR(398)
);

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 9 de 33

Modificar el paso STEP SETUP TABLES


Ejemplo de valores a cambiar:
STEP SETUP_TABLES
(
APPLY
CHECKSUM = DEFAULT
(
CAMPOID CHAR(2) NOT NULL,
CAMPOVALOR CHAR(398)
)
PRIMARY INDEX (CAMPOID);
)
TO OPERATOR (operadorDDL());
);

Modificar el paso operadorLectura


Ejemplo de valores a cambiar:
operadorLectura[@PRMF_INSTANCIA_LECTURA]
ATTRIBUTES
(
FileName = @PRMU_FILE_INPUT,
RowErrFileName = @PRMF_DIR_ERROR || @PRMU_FILE_INPUT || .err,
Format = TEXT,
OpenMode = READ,
SkipRows = 0,
DirectoryPath = @PRMF_PATH_DAT,
IndicatorMode = N,
QuotedData = Optional,
AcceptedExcessColumns = Y,
MultipleReaders = N

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 10 de 33

3.4. Evidencia de ejecucin

A continuacin evidencia de ejecucin de ambos proceso TPT ejecutados en la maquina


Unix 57.228.130.47.
3.4.1. Proceso archivo delimitado.
Ejemplo Ejecucin:

tbuild -f /export/home/dsacsmlg/TPT/SHL/TPT_LOAD_ESTANDAR_STG_DELIM.tptload -v
/export/home/dsacsmlg/TPT/CNF/config.ini -u "PRMU_TB_INPUT='TEST',
PRMU_FILE_INPUT='DETALLE.TXT'" TEST

Para este caso se utiliz como input archivo DETALLE.TXT, el cual est delimitado por el
carcter | y posee 18 registros, y fue cargado en la tabla destino LOGM.TEST.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 11 de 33

Muestra de datos:

3.4.2. Proceso Archivo Largo Fijo


Ejemplo Ejecucin:
tbuild -f /export/home/dsacsmlg/TPT/SHL/TPT_LOAD_ESTANDAR_STG_LARGO_FIJO.tptload
-v /export/home/dsacsmlg/TPT/CNF/config.ini -u "PRMU_TB_INPUT='TEST_VAR',
PRMU_FILE_INPUT='4M051814.DAT'" load_TEST_VAR

Para este caso se utiliz como input archivo 4M051814.DAT el cual posee un formato de
largo fijo de 40 caracteres y contiene 23491 registros, y fue cargado en la tabla destino
LOGM. TEST_VAR.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 12 de 33

Muestra de datos:

3.5. BTEQ Insert desde Staging a Histrico


El template BTEQ BTEQ_INSERT_HIST_TEST.bteq tiene como objeto generar la base para la
insercin de los registros cargados en una tabla del modelo Staging (una tabla por proceso)
y llevar estos registros a su tabla histrica.
Parmetros necesarios para la ejecucin de la BTEQ de los proyectos:
Posicin
$1
$2
$3
$4
$5
$6
$7

Parmetros BTEQ
Descripcin
Nombre de Base Tabla Origen
Nombre de la Tabla Origen
Nombre de Base Tabla Destino
Nombre de la Tabla Destino
Servidor Teradata
Usuario Teradata
Password Teradata

Ejemplo ejecucin:
sh /export/home/dsacsmlg/TPT/SHL/BTEQ_INSERT_HIST_TEST.bteq WCBI_STG TEST
WCBI_HIST TEST 57.228.128.8 gappelgren password >>
/export/home/dsacsmlg/TPT/LOG/log_insert_historico.log

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 13 de 33

Muestra de log:

Muestra de Datos:

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 14 de 33

3.6. BTEQ Regla Negocio (Insert table temporal).


El template BTEQ BTEQ_REGLA_NEG_TEST.bteq tiene como objeto generar la base de los
procesos de negocios en donde se realizarn las trasformaciones, validaciones y se crear
una tabla en el esquema TMP, con la misma estructura de la tabla final ODS; el nombre
ser la misma tabla ms el prefijo del parmetro $8, la cual ser cargada en ODS con una
BTEQ genrica por tabla.
Parmetros necesarios para la ejecucin de la BTEQ:
Parmetros BTEQ
Posicin
Descripcin
$1 Nombre de Base STG
$2 Nombre de Base TMP
$3 Nombre de Base ODS
$4 Nombre de Base FDM
$5 Servidor Teradata
$6 Usuario Teradata
$7 Password Teradata
$8 Prefijo Tabla Temporal

Ejemplo ejecucin:
sh /export/home/dsacsmlg/TPT/SHL/BTEQ_REGLA_NEG_TEST.bteq WCBI_STG WCBI_TMP
WCBI_ODS WCBI_FDM 57.228.128.8 gappelgren xxxxx 001 >>
/export/home/dsacsmlg/TPT/LOG/log_regla_negocio.log

Muestra de log:

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 15 de 33

Muestra de Datos

3.7. BTEQ Carga ODS (Insert desde tabla temporal a Tabla final ODS).
El template BTEQ BTEQ_LOAD_WCBI_TB_TEST.bteq tiene como objeto generar la base de
los procesos genricos de carga ODS, en donde se toma la informacin desde una tabla
ubicada esquema TMP, la cual fue creada en la BTEQ de negocio concatenando el prefijo,
el cual debe ser nico por tabla, de modo de asegurar que no se repita la tabla temporal.
Se inserta su data en el esquema ODS. La estructura de ambas tablas debe ser idntica de
modo de asegurar mejor performance.
Parmetros necesarios para la ejecucin de la BTEQ:
Posicin
$1
$2
$3
$4
$5
$6
$7

Parmetros BTEQ
Descripcin
Nombre de Base Tabla TMP
Nombre de la Tabla Origen TMP
Nombre de Base Tabla Destino ODS
Nombre de la Tabla Destino ODS
Servidor Teradata
Usuario Teradata
Password Teradata

Ejemplo ejecucin:

sh /export/home/dsacsmlg/TPT/SHL/BTEQ_LOAD_WCBI_TB_TEST.bteq WCBI_TMP TEST_001


WCBI_ODS 57.228.128.8 gappelgren password >>
/export/home/dsacsmlg/TPT/LOG/log_load_tabla_ods.log

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 16 de 33

Muestra de log:

Muestra de datos:

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 17 de 33

Oracle
(Aplica desde Oracle Versin 8 en adelante)

4. ORACLE
4.1. INTRODUCCIN Oracle
El siguiente documento tiene por objetivo indicar los patrones de diseo para la extraccin,
carga y transformacin (ELT) orientada a la carga en ORACLE, mediante la utilizacin del
utilitario de carga Oracle SQL*Loader.
4.2. ALCANCE Oracle
Este documento posee como alcance disponer de template de desarrollo para procesos de
carga de datos en ORACLE mediante SQL*Loader, con la definicin de los parmetros bases
que se deben considerar en los proyectos. No est en el alcance la definicin funcional de la
base de datos, por ejemplo validar si puede poseer reproceso, vigencia, severidades, etc.
4.3. Formato de archivos
El formato de los archivos debe ser UNIX con fin de lnea LF (Line Feed).
4.4. DETALLE TEMPLATE
4.4.1. Archivo de entrada delimitado
El patrn de adquisicin ser implementado mediante la utilizacin del utilitario
Oracle SQL*Loader para la carga sobre la tabla histrica del proceso.
Este template, permite ser reutilizado como base para la creacin de los procesos
SQL*Loader, y posee un ejemplo de cmo leer un archivo fuente de largo variable,
que puede estar delimitado por cualquier caracter (por ejemplo: pipe | punto y
coma ; coma , etc.) y ser utilizado para realizar la carga de la informacin sobre
una tabla destino.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 18 de 33

Opciones de carga de datos:

Truncamiento: cuando el destino del archivo es una tabla de staging,


generalmente se requiere limpiarla antes de comenzar la carga, es decir la
tabla debe estar vaca. Para lo anterior en el archivo de control se debe indicar
la instruccin TRUNCATE, con lo cual el proceso inicia truncando la tabla para
luego realizar la carga.
Incremental: en el caso que los datos deban anexarse a una tabla, ya sea
porque ya contiene informacin o por si los datos a cargar estn divididos en
varios archivos, entonces en el archivo de control se debe especificar la
sentencia APPEND.

Modificaciones a realizar en el archivo template (archivo de control):

Por cada nuevo proceso de carga, se debe crear un nuevo archivo en base al
template, modificando su nombre en base a la nomenclatura:
SQL_LOAD_ + AcrnimoORIGEN +OWNER + SYNONYM + _DELIM.load

El archivo de texto que contiene datos no debe poseer nombres de las columnas.
En la excepcin que el archivo tenga nombres de columnas en la primera lnea,
entonces se debe especificar que el proceso no la considere, es decir que la
salte. La opcin SKIP indica la cantidad de lneas que deben ser excluidas antes de
comenzar a cargar los datos, lo cual se logra con la sentencia SKIP. Ejemplo:
OPTIONS (SKIP=1)

Para minimizar el uso de Redo Log y aumentar la velocidad de carga, se


recomienda utilizar sentencia UNRECOVERABLE.

Para indicar el archivo de datos a cargar, se debe utilizar la sentencia DATA segn
lo siguiente:
DATA= [ruta completa archivo + nombre archivo]
Ejemplo: DATA= /app/[Negocio]/[srv*]/DATA/archivo.dat

En la instruccin INTO TABLE se debe indicar el nombre de la tabla de destino en


la cual se cargarn los datos.

En la instruccin FIELDS TERMINATED BY se debe indicar el caracter separador de


columnas. La recomendacin es utilizar PIPE |.

La instruccin OPTIONALLY ENCLOSED BY indica que los valores de los campos


podran estar rodeados por comillas dobles (por ejemplo cuando se exportan
valores de Excel hacia csv), esta lnea es opcional y puede ser removida. Se
recomienda que no se utilicen comillas en los valores de campo.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 19 de 33

Para no utilizar el cach para optimizar el proceso de carga, se debe utilizar la


sentencia DIRECT = TRUE

En el caso los separadores de campo del archivo no cubran el total de las


columnas de la tabla, entonces se debe utilizar la sentencia TRAILING NULLCOLS
para que asuma como nulas las posteriores columnas de la tabla.
Ejemplo: TABLA (COL_A, COL_B, COL_C, COL_D)
Lnea archivo: SCL|Santiago

Finalmente en este nuevo archivo de control, se debe modificar la definicin de la


estructura de los datos a cargar, es decir se deben especificar los campos con su
respectivo tipo de datos y formato si es necesario.
La definicin de tipos de datos debe ser lo ms detallada posible para evitar
conversiones automticas por parte del motor de BD, ya que ello impacta
directamente el rendimiento de la carga y podra introducir valores errneos en la
BD.

El archivo control preparado para archivos delimitado es:


SQL_LOAD_TNC_JURO_FARE_DELIM.load

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 20 de 33

4.4.2. Archivo de entrada de ancho fijo


Para la lectura de archivos con formato de largo fijo, se utiliza un archivo template similar
al del ejemplo anterior, con la las siguientes consideraciones:

Por cada nuevo proceso de carga, se debe crear un nuevo archivo en base al template,
modificando su nombre en base a la nomenclatura:
SQL_LOAD_ + AcrnimoORIGEN + OWNER + SYNONYM + _LARGO_FIJO.load

No se debe definir la instruccin FIELDS TERMINATED BY

No se debe definir la instruccin OPTIONALLY ENCLOSED BY

Para cada campo, se debe indicar el comienzo y fin del mismo, es decir, el primer y el
ltimo byte que componen el valor del campo.
El archivo control preparado para archivos de ancho fijo es:
SQL_LOAD_TNC_JURO_FARE_LARGO_FIJO.load

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 21 de 33

4.4.3. Archivo de parmetros.


El archivo de parmetros es comn para ambas definiciones (formato de largo variable y de
largo fijo) y es necesario para definir el usuario, password e instancia a la cual se debe
conectar el proceso de carga. El resguardo de las credenciales de conexin se controlar
con privilegios a la cuenta respectiva y/o con utilitarios como VIVE. Adems en ambiente
productivo el archivo de configuracin solo ser accesible para responsables del rea de
Produccin o QA segn corresponda.
IMPORTANTE: Al momento de indicar la instancia a la cual se debe conectar el proceso,
esta debe estar previamente definida en el archivo TNSNAMES.ORA de la mquina en la
cual se corre el proceso.
El archivo template preparado es:
SQL_CONFIG.par
Parmetro
USERID

SILENT
ERRORS

Observacion
Usuario, password e instancia a la que se desea
conectar, el formato es user/pass@instance
Suprime mensajes que normalmente aparecen
por pantalla durante la ejecucin.
Opciones:
HEADER - Suppresses the SQL*Loader header.
Header messages still appear in the log file.
FEEDBACK - Suppresses the "commit point
reached" feedback messages.
ERRORS - Suppresses the data error messages in
the log file that occur when a record generates an
Oracle error that causes it to be written to the
bad file. A count of rejected records still appears.
DISCARDS - Suppresses the messages in the log
file for each record written to the discard file.
PARTITIONS - Disables writing the per-partition
statistics to the log file during a direct load of a
partitioned table.
ALL - Implements all of the suppression
Cantidad mxima de errores permitidos antes de
abortar la operacin.

Ejemplo
scott/tiger@orcl

SILENT=(feedback)
50

4.4.4. Ejecucin del proceso.


Una vez que se han creado los archivos de control y de parmetros, la ejecucin es
simplemente invocar el utilitario de carga indicando el nombre del archivo de parmetros.
Dicha sentencia debe quedar dentro de una Shell para ser calendarizada en Control-M o
desde la herramienta de ETL o ELT.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 22 de 33

La Shell debe devolver los cdigos de retorno del proceso. Para SQL*Loader son:
0= Success
1= Fail (error de sintaxis, error del SO, de conectividad o propio de la BD)
2= Warning (algunos o todos los registros rechazados o descartados, o la carga se
interrumpi)
3= Fatal
Ejemplo de ejecucin:
sqlldr parfile=SQL_CONFIG.par control=SQL_LOAD_ESTANDAR_DELIM.load data=archivo.dat

4.5. Evidencia ejecucin


A continuacin evidencia de ejecucin de ambos procesos.
4.5.1. Proceso archivo delimitado.
Ejemplo Ejecucin:
sqlldr parfile=SQL_CONFIG.par control=SQL_LOAD_ESTANDAR_DELIM.load data=archivo.dat

Para este caso se utiliz como input archivo /tmp/data/archivo.dat, el cual est delimitado
por el carcter | y posee 50.000 registros y fue cargado en la tabla destino
TMP_TAM_RNU_REC_SMALL.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 23 de 33

Muestra de datos:

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 24 de 33

4.5.2. Proceso Archivo Largo Fijo.


Ejemplo Ejecucin:
sqlldr parfile=SQL_CONFIG.par control=SQL_LOAD_ESTANDAR_STG_LARGO_FIJO.load data=archivo.dat

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 25 de 33

Para este caso se utiliz como input archivo de largo fijo /.. /archivo.dat, el cual posee 101
registros (incluyendo los nombres de las columnas), y fue cargado en la tabla destino
TMP_TAM_RNU_REC_SMALL.

Muestra de datos:

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 26 de 33

4.6. Normas Cargas Multi Hebras con SQL Loader

PARALLEL: Para ejecutar simultneamente mltiples instancias de SQL*Loader que permitan


realizar la carga en una misma tabla se debe pasar el parmetro PARALLEL=true. Este parmetro
automticamente deja como unusable los ndices pero el comportamiento por defecto es

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 27 de 33

reconstruir los ndices al finalizar la carga, y si hay varias hebras de ejecucin se debe adems
utilizar SKIP_INDEX_MAINTENANCE ya que en caso contrario el proceso abortar debido a que cada
hilo de ejecucin intentar reconstruir los ndices.
SKIP_INDEX_MAINTENANCE: El parmetro SKIP_INDEX_MAINTENANCE=true le indica a
SQL*Loader que no intente reconstruir los ndices finalizada la carga. Est asociado con Parallel y se
debe considerar una reconstruccin de ndices independiente del SQL*Loader una vez que finalicen
ok todos los hilos de carga.
SKIP_UNUSABLE_INDEXES: si la tabla tiene marcado los ndices como no usables SQL*Loader no
realiza la carga, por lo que se requiere agregar el parmetro SKIP_UNUSABLE_INDEXES=true para
que no realice dicha validacin.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 28 de 33

5. ESCENARIOS DE USO Y CONTROL DE PROCESOS


Este apartado define los escenarios de uso, cmo se debe articular el control de los procesos y
las herramientas a utilizar.
5.1. Primer Escenario
DIRECTO: en la que se realiza una sola accin de CARGA sin transformaciones de ninguna
ndole. Corresponde a cargas masivas a una base de datos ORACLE o TERADATA en los
mbitos de STG o HIS. En este caso, las herramienta para realizar la carga es la ejecucin del
script TPT o SQL*Loader directamente con el Schedule CONTROL+M.

Figura 1. Diagrama Simple de Ejecucin

Figura 2. Diagrama de Secuencia para cargas de ORACLE con SQL*LOADER, escenario Puro/Directo

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 29 de 33

La siguiente tabla muestra qu tecnologa y cul ser su rol en este contexto de cargas de
datos masivas:
Patrn ELT
Arquitectura
Referencia
Definiciones

LNG

STG

TDT

ORACLE

LANDING. rea (FileSystem) en


la que se dejan los archivos que
alimentar el STG
SFTP-Monitor SFTP-Monitor
STAGING. rea de trabajo de la
base de datos en la que se
cargan las bases de STG de las
fuentes RAW que alimentarn
ODS. Pueden ser diferentes
esquemas.
TPT
SQL*Loader

Quin hace la actividad


Herramienta ETL Scheduler

N/A

N/A

X
X: Inicia
llamada a
Shell y
Recibe el
estado de
la carga

5.2. Segundo Escenario


MIXTO: en la que se realizan cargas a las bases datos ORACLE o TERADATA pero adems el
proyecto contempla transformaciones de cualquier alcance. En este caso, las herramientas
para el control son Control+M, un ETL (PTH/DTS1) y las herramientas nativas de los motores
(TPT y/o SQL*Loader).

Figura 3. Diagrama Simple de Ejecucin

PTH/DTS se refiere a Pentaho o Datastage

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 30 de 33

Figura 4. Diagrama de Secuencia para cargas de ORACLE con SQL*LOADER, escenario MIXTO

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 31 de 33

El siguiente cuadro muestra la generalizacin de qu herramienta se debe usar y cul ser


su rol dentro de la solucin en un escenario Mixto.
Patrn ELT
Arquitectura
Referencia
Definiciones

LNG

STG

ODS

FDM

LANDING. rea
(FileSystem) en la que se
dejan los archivos que
alimentar el STG

TDT

ORACLE

SFTP-Monitor

SFTP-Monitor

STAGING. rea de trabajo


de la base de datos en la
que se cargan las bases de
STG de las fuentes RAW.
TPT
INTEGRATED. rea para
integrar datos.
Corresponde a una base
normalizada que integra
data de los diferentes
negocios.
Corresponde al almacn
de datos como tal. Puede
ser reutilizado a travs de
las capas de acceso y
semntica
BTEQ
FINAL_DATA_MODEL.
rea de la base de datos
en la que residen los
diferentes datamarts que
son explotadas por el
negocio. Pueden ser
diferentes esquemas
BTEQ

Patrn de diseo ELT Patrn de


diseo ELT

Quin hace la actividad


Herramienta ETL Scheduler

X
Ejecuta scripts
Devuelve
respuesta a
Scheduler

X
x - Inicia
llamada a
ETL y
Recibe el
estado

X
Ejecuta scripts
Procedimiento Devuelve
Almacenado
respuesta a
(SP)
Scheduler

x - Inicia
llamada a
ETL y
Recibe el
estado

Procedimiento
Almacenado
(SP)
x

x - Inicia
llamada a
ETL y
Recibe el
estado

SQL*Loader

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 32 de 33

6. DIRECTORIOS LANDING para ORACLE SQL*LOADER


Landing se refiere al directorio donde se debe ubicar el archivo que ser cargado
Ruta de usuario de proyecto:
$DIRPLATAFORMA/[Proyecto]/DAT
Donde $DIRPLATAFORMA ser diferente de acuerdo al rea LANDING requerida

1) LANDING CORE: slo para el escenario donde no se usa infraestructura ETL en mquinas
llamadas BASH
a. /app/[Negocio]/[srv*]/DATA dejar el archivos (slo para el escenario donde no
se usa infraestructura ETL)
b. Para la Shell: /app/[Negocio]/[srv*]/SHL Shell de ejecucin SQL*Loader
2) LANDING en Mquina Pentaho debe usar los directorios estndares:
a. /PHDATA/[PROYECTO]/DAT dejar el archivos
b. /PHAPP/[PROYECTO]/SHL Shell de ejecucin SQL*Loader
3) LANDING en Mquina DataStage debe usar los directorios estndares :
a. /DSDATA/DS[PROYECTO]/DAT dejar el archivos
b. /DSAPP/DS[PROYECTO]/SHL Shell de ejecucin SQL*Loader
Ejemplo:
En DATASTAGE los archivos para usar SQL*LOADER y cargar ORACLE deben quedar en
/ DSDATA/RAC/DAT

Usuarios. Datastage: ds*user_Proy que tiene permisos full sobre sus directorios.
Debe tener en variables de ambiente el path del directorio donde ejecute sqlldr.
Usuario: Base de Datos ORACLE: srv_* que permite realizar la conexin a la base de datos
Usuario del Sistema en el ambiente Unix: dsadmin
Variables de ambiente:
ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.x.x/client
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

7. RESOLUCIN DE CONTROVERSIAS
El rea de arquitectura empresarial, es responsable de la construccin y publicacin de este
documento, por lo que es la ltima instancia a cargo de resolver las controversias que se produzcan
por concepto de:
Interpretacin del documento.
Usos tecnolgicos que vayan ms all del espritu de este documento.
Documentacin o normativa considerada obsoleta.

Patrn de diseo ELT Patrn de


diseo ELT

Fecha de Publicacin: 29-12-2014


Arquitectura Corporativa LATAM

Pgina 33 de 33

S-ar putea să vă placă și