Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola Buenas..
Tengo algunas dudas respecto al rendimiento de QV en el uso de la concatenacion, en base a un codigo que encontre en el foro para agregarle un campo a una tabla, que es producto de campos de otra tabla tuve que reccorrer todo el registro QVD (de todas maneras para guardarlo con anterioridad lo havia filtrado).
En realidad me gustaria entender aspectos de mejora de rendimiento o la forma mas eficiente de hacer una funcion de este tipo que me permita agregar un campo producto de otras tablas. ¿Como es mejor hacerlo ? utilizando el filtro de la exprescion directo sobre el grafico ??? o hacerlo tal como lo hise en el Script que pongo a continuacion...? ¿Existe alguna otra forma de realizar esto??
Esta un poco largo pero Esta Funcional:
/******************************************************************************************************************/
tbIndicadoresEstrategicos:
LOAD
dcIndicadores,
dcIndicadorPorArea,
dcPeriodo,
dmValor
FROM [QvdStore\tbIndicadores.qvd] (qvd)
Where dmValor >0 and not Isnull(dcPeriodo);
INNER JOIN LOAD
dcArea,
dcGondolas,
dcIndicadorPorArea,
dcPilar,
dcTipoIndicador,
dgIndicadorPorArea,
dnMeta
FROM [QvdStore\tbIndicadorPorArea.qvd] (qvd)
Where dnMeta>0;
STORE tbIndicadoresEstrategicos into [QvdStore\tbIndicadoresEstrategicos.qvd] (qvd);
DROP Table tbIndicadorPorArea;
LET vDcIndicadores = PEEK('dcIndicadores', 0, 'tbIndicadoresEstrategicos'); // Obtiene la Fecha de la primera fila de la tabla
ResultadoPorcentaje:
LOAD 1 as dcIndicadores
AUTOGENERATE 1
WHERE 1=0; // Genero una tabla vacía con solo una columna Fecha
LET vCantFilas = noofrows('tbIndicadoresEstrategicos');
FOR i = 0 TO vCantFilas - 1 // Repite el bucle tantas veces como filas tiene la tabla
LET vDcIndicadores = PEEK('dcIndicadores', $(i), 'tbIndicadoresEstrategicos'); //Obtiene el codifgo del indicador de la fila actual
LET vDmValor = PEEK('dmValor', $(i), 'tbIndicadoresEstrategicos'); //Obtiene el valor de la fila actual
LET vDnMeta = PEEK('dnMeta', $(i), 'tbIndicadoresEstrategicos'); //Obtiene la meta de la fila actual
LET vDnPorcentaje = Div(($(vDmValor)*100),$(vDnMeta));// Obtiene el porcentaje de cumplimiento de la meta
CONCATENATE (ResultadoPorcentaje) // Graba un total en la tabla "ResultadoPorcentaje"
LOAD
'$(vDcIndicadores)' as dcIndicadores,
'$(vDnPorcentaje)' as dnPorcentaje
AUTOGENERATE 1;
NEXT
/******************************************************************************************************************/
Disculpen la patudez pero quisiera averiguar una cosilla más. Es mejor hacer lo asi como esta anteriormente o hacerlo como un regiustro mas dentro de la misma tabla?? que es mas eficiente???
dejo el dibujo del esquema producto del script anterior:
De antemano Muuuchas Gracias
Muchas gracias a thechacal lo entendi mejor en realidad lo que deseaba hacer esta en el siguiente codigo:
tbIndicadoresEstrategicos:
LOAD
dcIndicadores,
dcIndicadorPorArea,
dcPeriodo,
dmValor
FROM [QvdStore\tbIndicadores.qvd] (qvd)
Where dmValor >0 and not Isnull(dcPeriodo);
INNER JOIN LOAD
dcArea,
dcGondolas,
dcIndicadorPorArea,
dcPilar,
dcTipoIndicador,
dgIndicadorPorArea,
dnMeta
FROM [QvdStore\tbIndicadorPorArea.qvd] (qvd)
Where dnMeta>0;
STORE tbIndicadoresEstrategicos into [QvdStore\tbIndicadoresEstrategicos.qvd] (qvd);
DROP Table tbIndicadorPorArea;
tbIndicadoresEstrategicos2:
Load
dcIndicadores,
dcIndicadorPorArea,
dcPeriodo,
dmValor,
dcArea,
dcGondolas,
dcPilar,
dcTipoIndicador,
dgIndicadorPorArea,
dnMeta,
((dmValor*100)/dnMeta) as dnPromedio2
Resident tbIndicadoresEstrategicos;
DROP Table tbIndicadoresEstrategicos;
Aca les dejo el link de como me lo explico: http://community.qlik.com/message/324900#324900
Gran Ayuda!!