Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Q&A with Qlik - Qlik Cloud Migration: Questions about migrating to Qlik Cloud? Catch the latest replay!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problema con Suma

Hola tengo el siguiente script:

[INGRESOS TOTALES]:

    LOAD *

    FROM (qvd); 

    

    left join ([INGRESOS TOTALES]) 

    LOAD

         DES,

         NOR,

         [CENTRO DE COSTO]   AS [CENTRO DE COSTO PAGE2]

    FROM

   

    (ooxml, embedded labels, table is [Page 2]);

    

    left join ([INGRESOS TOTALES]) 

    LOAD

         DES,

         [CENTRO DE COSTO]    AS [CENTRO DE COSTO PAGE1]

    FROM

   

    (ooxml, embedded labels, table is [Page 1]);

   left join ([INGRESOS TOTALES]) 

   LOAD

     DES,

     OPA,

     [CENTRO DE COSTO] AS [CENTRO DE COSTO PAGE3]

   

FROM

(ooxml, embedded labels, table is [Page 3]);

left join ([INGRESOS TOTALES]) 

LOAD

     DES,

     PRF,

     [CENTRO DE COSTO] AS [CENTRO DE COSTO PAGE4]

FROM

(ooxml, embedded labels, table is [Page 4]);

left join ([INGRESOS TOTALES]) 

LOAD

     DES,

     PTA,

     [CENTRO DE COSTO] AS [CENTRO DE COSTO PAGE5]

FROM

(ooxml, embedded labels, table is [Page 5]);

    [INGRESOS TOTALES NEW]: 

        LOAD 

        PTA, 

        CLA_P, 

        ORD, 

        ITE, 

        OPA, 

        PAC, 

        NOR, 

        PFA, 

        PRE, 

        CFA, 

        CRE, 

        HON, 

        GAS, 

        FEC, 

        PRF, 

        SER, 

        NRE, 

        ORI, 

        SUC, 

        NFA, 

        TOTAL, 

        DES,

        TRIM( [CENTRO DE COSTO PAGE1] & [CENTRO DE COSTO PAGE2] & [CENTRO DE COSTO PAGE3] & [CENTRO DE COSTO PAGE4] & [CENTRO DE COSTO PAGE5] ) AS [CENTRO DE COSTO]

     RESIDENT [INGRESOS TOTALES];

    

    DROP TABLE [INGRESOS TOTALES];

    RENAME TABLE [INGRESOS TOTALES NEW] TO [INGRESOS TOTALES];

Si selecciono todos los campos y los exporto a excel, la suma del campo TOTAL me da un valor, pero si hago un pivot table o tabla simple de la columna TOTAL me da un valor mas alto. Alguien me podria ayudar al respecto?

Labels (1)
12 Replies
Not applicable
Author

Carlos Muchas Gracias! Funciona excelente! Ahora para entender me podrias explicar la logica de lo que hicimos?

Carlos_Reyes
Partner - Specialist
Partner - Specialist

Martin,

En resumen utilizamos la función ApplyMap para integrar los valores de [CENTRO DE COSTO] a cada renglón correspondiente. La principal característica del ApplyMap es que te permite mapear un valor a partir de una llave.

Puedes revisar la ayuda de QlikView para ver más acerca del ApplyMap pero a groso modo funciona así:

  1. Tienes que crear la tabla de mapeo, la cual solo puede tener dos campos. El primer campo es la llave y el segundo campo debe contener los valores a mapear. Las tablas de mapeo sólo existen durante la ejecución del script, al terminar este proceso son borradas de la memoria.
  2. Una vez creada la tabla de mapeo debes invocarla en la tabla donde deseas integrar o mapear los datos. La sintáxos se compone de tres parámetros:
    1. El primer parámetro es el nombre de la tabla de mapeo
    2. El segundo parámetro es el campo local que servirá como llave y que debe hacer match con alguno de los valores que se encuentren en el primer campo de la tabla de mapeo, NO IMPORTA QUE LOS CAMPOS LLAVE SE LLAMEN DIFERENTES.
    3. El tercer parámetro es opcional y sirve para colocar un valor default en caso de que el valor del campo llave no haga match y por ende no se pueda mapear ningún valor. Depende de la necesidad pero por lo general es bueno poner este valor para identificar aquellos registros que no se pudieron mapear.

Dado esto, lo que hicimos fue crear llaves compuestas para aquellos [CENTROS DE COSTO] que dependen de más de un campo para poder integrar su valor. Por ejemplo, el [CENTRO DE COSTO] de la página dos depende de los campos DES y NOR, por lo que se creó la llave DES & '_' & NOR y así cada llave se creó de manera correspondiente con sus dependencias de campos.

El punto importante en el ApplyMap es que sólo mapeará el primer valor que se encuentre para una llave. Entonces, si una llave tiene más de dos [CENTRO DE COSTO], el ApplyMap no nos hubiera servido de nada. Por esta razón el ApplyMap sólo puede sustituir a un JOIN cuando cada llave sólo tiene un valor a mapear, si es más de uno un JOIN u otro método serán necesarios.

Espero que esto te clarifique un poco más el procedimiento.

Por cierto, si consideras algún comentario como útil, no dudes en marcarlo como tal para que otras personas puedan encontrar respuestas de manera más rápida.

Saludos.

Not applicable
Author

Gracias por todo Carlos, quedo bastante claro.. Un fuerte abrazo.

Saludos