logo.jpg (8197 bytes)

  
Suscríbase gratis a algunos boletines electrónicos:
   
Nombre:   Business Intelligence

   

E-mail: Project Management
País: Productividad Industrial
A

Apuntes Técnicos

Ejemplo de automatización de cargas en Cognos DecisionStream

Problema:

Se necesita cargar la información que no este en la tabla de hechos basándose en fechas de carga que pueden servir para la automatización de cargas diarias o para recargas de información.

Solución:

Se tienen 2 tablas en la base de datos para el control de las cargas.

DM_LoadingDates - Donde se localiza la fecha inicial “Initial_Loading_Date” y final “Finish_Loading_Date” de la carga y los diferentes rubros “Information_Type” que se requieran cargar.
DM_LoadingDates_Log - Donde se lleva el control del inicio y fin de las cargas por día. Incluye los campos "Log_Date", que contiene la fecha y hora del comienzo o terminación de la carga y "Log_Description", donde se describe la terminación o comienzo de las cargas con su fecha de inicio y fin.

JOBSTREAM

Este job llevara a cabo la automatización de las cargas con la periodicidad que se requiera, además se puede utilizar para recargas de información.

Primero se declaran las variables de fecha inicial (Initial_Loading_Date) y de fecha final (Finish_Loading_Date) con “Type” de “CHAR(10)” en las propiedades del “jobstream”.

Se realiza un job con los componentes:

Procedure1

Descripción:

v Obtiene la fecha inicial (Variable $Initial_Loading_Date) y final (Variable $Finish_Loading_Date) de la carga.

v Inserta un registro en una tabla de Log´s (DM_LoadingDates_Log) para tener documentado la fecha y hora del comienzo de la carga.

Acción:

Se asigna el valor de la variable $Initial_Loading_Date tomado del campo "Initial_Loading_Date" de la tabla de "DM_LoadingDates”

$Initial_Loading_Date := LookUp('ConnectionName',Concat('SELECT "Initial_Loading_Date" FROM "DM_LoadingDates" WHERE "Information_Type"=',char(39),'Rubro1',char(39)));

Se asigna el valor de la variable $Finish_Loading_Date tomado del campo "Finish_Loading_Date" de la tabla de "DM_LoadingDates”

$Finish_Loading_Date := LookUp('ConnectionName',Concat('SELECT "Finish_Loading_Date" FROM  "DM_LoadingDates" WHERE "Information_Type"=',char(39),'Rubro1',char(39)));

Si no tiene valor de fecha final $Finish_Loading_Date se le pone la fecha de ese día

IF $Finish_Loading_Date = '' THEN $Finish_Loading_Date := ToChar('{$DS_RUN_TIMESTAMP}','mm/dd/yyyy');

Para evitar duplicidad se pueden borrar los datos que hubieran existentes entre la fecha inicial y final, con la instrucción Sql(' ConnectionName ', 'DELETE FROM ...') o se puede usar en el siguiente Build el “Refresh Type” de “UPDATE/INSERT”, al cual se le da una llave y si la encuentra actualiza el registro y si no la encuentra inserta el registro.

Se inserta un registro en la tabla donde se lleva el control del inicio y fin de las cargas (DM_LoadingDates_Log) para indicar que empieza la carga

Sql('ConnectionName',Concat('INSERT INTO "DM_LoadingDates_Log"("Log_Date","Log_Description") VALUES (',char(39),ToChar('{$DS_RUN_TIMESTAMP}','mm-dd-yyyy hh:mm:ss'),char(39),',',char(39),'Empieza la carga del Modelo de Rubro1 del día ', $Initial_Loading_Date,' al día ',$Finish_Loading_Date,char(39),')'));

 

Build

v Build que extrae la información de la tabla fuente de origen de Rubro1 a la tabla de destino, tomando la fecha inicial ($Initial_Loading_Date) y final ($Finish_Loading_Date) de carga, obteniendo estos valores del procedimiento anterior, para evitar duplicidad se puede usar en el Build el “Refresh Type” de “UPDATE/INSERT”.

Ejemplo:

SELECT … FROM Tabla_Fuente WHERE Fecha_Rubro1 >= '{$Initial_Loading_Date}' AND Fecha_Rubro1 <= '{$Finish_Loading_Date}'

 
decisionstram_automatizacion2.jpg (947 bytes) Procedure2

Descripción: 

v Inserta un registro en una tabla de Log´s “DM_LoadingDates_Log” para tener documentado la fecha y hora del termino de la carga.

v Obtiene la fecha inicial de carga para Rubro1, para la próxima vez que se ejecute la automatización.

v La fecha inicial se asigna obteniendo la fecha máxima de la tabla de hechos de Rubro1 y se actualiza en la tabla de “DM_LoadingDates”, que es de donde se toma la fecha inicial al principio de la automatización y se deja la fecha final en blanco. Al principio de la automatización si no encuentra la fecha final le pone la fecha de ese día.

Acción:

 Se inserta un registro en la tabla donde se lleva el control del inicio y fin de las cargas “DM_LoadingDates_Log” para indicar que termina la carga

Sql('ConnectionName',Concat('INSERT INTO "DM_LoadingDates_Log"("Log_Date","Log_Description") VALUES (',char(39),ToChar('{$DS_RUN_TIMESTAMP}','mm-dd-yyyy hh:mm:ss'),char(39),',',char(39),'Termina la carga del Modelo de Rubro1 del día ',$Initial_Loading_Date,' al día ',$Finish_Loading_Date,char(39),')'));

Se asigna el valor de la variable $Initial_Loading_Date

$Initial_Loading_Date:= LookUp('ConnectionName','SELECT max("OrderDate") FROM "Orders"');

Se asigna el valor de la variable $Finish_Loading_Date

$Finish_Loading_Date:= '';

Se actualizan los campos de "Initial_Loading_Date" y “Finish_Loading_Date" de la tabla de "DM_LoadingDates"

Sql('ConnectionName',Concat('UPDATE "DM_LoadingDates" SET Initial_Loading_Date=',char(39),$Initial_Loading_Date,char(39),', Finish_Loading_Date=',char(39),$Finish_Loading_Date,char(39),' WHERE "Information_Type"=',char(39),'Rubro1',char(39)));

 
La línea de comando que aparece al ejecutarse el job se puede poner en un archivo .BAT, el cual puede ser llamado desde Scheduler.

Si desea aprender mas sobre DecisionStream tenemos el curso de DecisionStream Administration.

(Desarrollado por PROFIN México)

 

Para cualquier comentario acerca de este sitio web favor de dirigirse a webmaster@profinmexico.com