Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

QlikSense – Transformar datos en columnas


LET S_Ambiente= LEFT(documenttitle(),3);
//SET S_TABLA = ‘DEV_STG_ERNSA_SD_2_02_ANUNCIOS_DATOS_WIZARDS’;
SET S_TABLA = ‘ANUNCIOS_DATOS_WIZARDS’;
SET S_FUENTE=’ERNSA_SD_2′;

/Se cargan las variables de sistema/
$(INCLUDE=[lib://$(S_Ambiente)STG$(S_FUENTE)_CFG/VARIABLES.TXT]);

X_ReloadTime:
LOAD
NOW() AS StartTime,
OSUSER() AS ReloadUser
AUTOGENERATE (1);

TMP_TABLA:
LOAD
%KEY_CodigoRemoto_CodigoAviso_NroRevision

FROM [lib://$(S_Ambiente)_STG_ERNSA_SD_2_QVD/STG_ERNSA_SD_2_01_ANUNCIOS.QVD]
(qvd)
WHERE ANUNCIOS.EstadoUltimo =1;

INNER JOIN (TMP_TABLA)
LOAD
%KEY_CodigoRemoto_CodigoAviso_NroRevision,
%KEY_id_Object,
%KEY_id_Wizard,
ANUNCIOS_WIZARDS_OBJECTS.id_Wizard,
ANUNCIOS_WIZARDS_OBJECTS.id_Object,
ANUNCIOS_WIZARDS_OBJECTS.Object_Value

FROM [lib://$(S_Ambiente)_STG_ERNSA_SD_2_QVD/STG_ERNSA_SD_2_01_ANUNCIOS_WIZARDS_OBJECTS.QVD]
(qvd);

INNER JOIN ( TMP_TABLA)
LOAD
%KEY_id_Wizard,
WIZARDS.Wizard_Name
FROM [lib://$(S_Ambiente)_STG_ERNSA_SD_2_QVD/STG_ERNSA_SD_2_01_WIZARDS.QVD]
(qvd);

INNER JOIN ( TMP_TABLA)
LOAD
%KEY_id_Object,
OBJECTS.Object_Name
FROM [lib://$(S_Ambiente)_STG_ERNSA_SD_2_QVD/STG_ERNSA_SD_2_01_OBJECTS.QVD]
(qvd);

// aqui el generic load

$(S_TABLA):
Generic Load
%KEY_CodigoRemoto_CodigoAviso_NroRevision,
ANUNCIOS_WIZARDS_OBJECTS.id_Wizard AS id_Wizard ,
ANUNCIOS_WIZARDS_OBJECTS.id_Object AS id_Object,
ANUNCIOS_WIZARDS_OBJECTS.id_Wizard & ‘‘ & ANUNCIOS_WIZARDS_OBJECTS.id_Object & ‘‘ &
PurgeChar(PurgeChar(PurgeChar(PurgeChar(PurgeChar(WIZARDS.Wizard_Name,’ ‘),'(‘),’)’) ,’/’),’-‘) & ‘_’ & //para que no de error en el store por el nombre de la tabla
PurgeChar(OBJECTS.Object_Name,’ ‘) AS Columna_Nombre,
ANUNCIOS_WIZARDS_OBJECTS.Object_Value as Columna_Valor
Resident TMP_TABLA;

drop table TMP_TABLA;

//STORE
Let CntTablas = NoOfTables();

For vTableNo = 0 to CntTablas

  Let vTableName = TableName($(vTableNo));
  let msgtrace = 'procesando tabla nro:'  & $(vTableNo) & ' nombre: ' & '$(vTableName)';
  trace $(msgtrace);
  if not ('$(vTableName)' = Null() or '$(vTableName)' = 'X_ReloadTime' or '$(vTableName)' = '' ) then
       let msgtrace = 'guardando tabla nro: ' & $(vTableNo) & ' nombre: ' &  '$(vTableName)';
       trace $(msgtrace);
        STORE $(vTableName) INTO [lib://$(S_Ambiente)_STG_$(S_FUENTE)_QVD/STG_$(S_FUENTE)_02_$(vTableName).QVD](qvd);

// DROP TABLE $(vTableName); //no se puede hacer asi
else
let msgtrace =’salteando tabla nro: ‘ & $(vTableNo) & ‘ nombre: ‘ & ‘$(vTableName)’;
trace $(msgtrace);
end if

Next vTableNo

// SECCION DROP TABLES
// Cada vez que se borra una tabla, cambia el indice de las demas,por eso no funciona el DROP TABLE dentro del script anterior
// Es decir , en cierto momento TableName(0) puede arrjar ‘Tabla1’, y luego de hacer drop table Tabla1, TableName(0) puede tomar el valor de ‘Tabla2’

Let CntTablas = NoOfTables();
let indiceTabla=0;

For vTableNo = 0 to CntTablas

  Let vTableName = TableName($(indiceTabla));
  let msgtrace = 'A BORRAR tabla nro:'  & $(vTableNo) & ' nombre: ' & '$(vTableName)';
  trace $(msgtrace);
  if not ('$(vTableName)' = Null() or '$(vTableName)' = 'X_ReloadTime' or '$(vTableName)' = '' ) then
       let msgtrace = 'Borrando tabla nro: ' & $(vTableNo) & ' nombre: ' &  '$(vTableName)';
       trace $(msgtrace);        
     DROP TABLE $(vTableName);         
  else
      let msgtrace ='dejando tabla nro: ' & $(vTableNo) & ' nombre: ' & '$(vTableName)';
    let indiceTabla= $(indiceTabla) +1; // dado que ya TableName(0) es 'X_ReloadTime', a partir de ahi se borrara TableName(1)
    trace $(msgtrace);
  end if 

Next vTableNo

//END

JOIN (X_ReloadTime)
LOAD
NOW() AS EndTime
AUTOGENERATE(1);

tExecTime:
LOAD
TIME(EndTime-StartTime,’hh:mm:ss’) AS execTime
RESIDENT X_ReloadTime;

EXIT SCRIPT;

Páginas: 1 2

octubre 6, 2020 - Posted by | QlikSense |

No hay comentarios aún.

Deja un comentario