Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Concatenacion de Tablas y Rendimiento

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:

dibujoModelo.bmp

De antemano Muuuchas Gracias

1 Reply
Not applicable
Author

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!!