Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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?

1 Solution

Accepted Solutions
Carlos_Reyes
Partner - Specialist
Partner - Specialist

Martin,

Si sólo existe un CENTRO DE COSTO por cada combinación de DES o DES - NOR o DES - OPA o DES - PRF o DES - PTA, entonces puedes darle vuelta a los JOINS con ApplyMap.

Intenta lo siguiente:

Mapa_DES:

Mapping LOAD Distinct

DES AS KEY_DES,

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

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

;

Mapa_DES_NOR:

Mapping LOAD Distinct

DES & '_' & NOR AS KEY_DES_NOR,

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

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

;

Mapa_DES_OPA:

Mapping LOAD Distinct

DES & '_' & OPA AS KEY_DES_OPA,

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

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

;

Mapa_DES_PRF:

Mapping LOAD Distinct

DES & '_' & PRF AS KEY_DES_PRF,

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

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

;

Mapa_DES_PTA:

Mapping LOAD Distinct

DES & '_' & PTA AS KEY_DES_PTA,

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

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

;

[INGRESOS TOTALES]:

LOAD *,

  ApplyMap('Mapa_DES',DES, Null() ) AS [CENTRO DE COSTO PAGE1],

  ApplyMap('Mapa_DES_NOR',DES & '_' & NOR, Null() ) AS [CENTRO DE COSTO PAGE2],

  ApplyMap('Mapa_DES_OPA',DES & '_' & OPA, Null() ) AS [CENTRO DE COSTO PAGE3],

  ApplyMap('Mapa_DES_PRF',DES & '_' & PRF, Null() ) AS [CENTRO DE COSTO PAGE4],

  ApplyMap('Mapa_DES_PTA',DES & '_' & PTA, Null() ) AS [CENTRO DE COSTO PAGE5]

FROM (qvd);

[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];

View solution in original post

12 Replies
alexandros17
Partner - Champion III
Partner - Champion III

Could you provide an example, how do you select all fields?

Not applicable
Author

I made a simple table with all the fields and later i exported to excel, I sum the field TOTAL in excel and its a diferent value than if i made in qlikview a pivot table with the field [CENTRO DE COSTO] as dimmension and Sum(TOTAL) as Calculated Dimension.

I know that the correct value is the excel value but i dont understand why in qlikview cant do a simple sum.

Sorry for my english

alexandros17
Partner - Champion III
Partner - Champion III

Sum(Total) must be computed in an expression, if it is possible change the name total with something else because TOTAL is a key world

Not applicable
Author

I thoght that but TOTAL is a sum of the fields (HON) AND (GAS)

I changed the pivot table for SUM(HON)+SUM(GAS) in the calculated dimension and didnt worked too.

I think the problem is something about the field [CENTRO DE COSTO] but i did know how i do wrong.

Carlos_Reyes
Partner - Specialist
Partner - Specialist

Martin,

Recuerda que al usar JOINS es posible que los registros se multipliquen si existen múltiples coincidencias entre registros. Creo que eso es justamente lo que está pasando en tu caso.

Tienes que revisar si los registros se están duplicando y utilizar SUM(TOTAL) como una expresión, no como dimensión.

La razón por la que te dan valores diferentes al sumar en Excel y en QlikView es porque si haces una tabla simple, esta te mostrará todas las combinaciones diferentes, es decir, solo te pondrá 1 vez los registros que están repetidos. Esto sin embargo no ocurre cuando haces la suma en la tabla pivote, pues la expresión SUM(TOTAL) suma todos los registros sin importar si están repetidos o no.

Not applicable
Author

Carlos lamentablemente tenes razon, estoy en un problema que no puedo solucionar. Gracias.

Carlos_Reyes
Partner - Specialist
Partner - Specialist

Martin,

Si sólo existe un CENTRO DE COSTO por cada combinación de DES o DES - NOR o DES - OPA o DES - PRF o DES - PTA, entonces puedes darle vuelta a los JOINS con ApplyMap.

Intenta lo siguiente:

Mapa_DES:

Mapping LOAD Distinct

DES AS KEY_DES,

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

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

;

Mapa_DES_NOR:

Mapping LOAD Distinct

DES & '_' & NOR AS KEY_DES_NOR,

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

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

;

Mapa_DES_OPA:

Mapping LOAD Distinct

DES & '_' & OPA AS KEY_DES_OPA,

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

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

;

Mapa_DES_PRF:

Mapping LOAD Distinct

DES & '_' & PRF AS KEY_DES_PRF,

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

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

;

Mapa_DES_PTA:

Mapping LOAD Distinct

DES & '_' & PTA AS KEY_DES_PTA,

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

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

;

[INGRESOS TOTALES]:

LOAD *,

  ApplyMap('Mapa_DES',DES, Null() ) AS [CENTRO DE COSTO PAGE1],

  ApplyMap('Mapa_DES_NOR',DES & '_' & NOR, Null() ) AS [CENTRO DE COSTO PAGE2],

  ApplyMap('Mapa_DES_OPA',DES & '_' & OPA, Null() ) AS [CENTRO DE COSTO PAGE3],

  ApplyMap('Mapa_DES_PRF',DES & '_' & PRF, Null() ) AS [CENTRO DE COSTO PAGE4],

  ApplyMap('Mapa_DES_PTA',DES & '_' & PTA, Null() ) AS [CENTRO DE COSTO PAGE5]

FROM (qvd);

[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];

Not applicable
Author

Carlos gracias por la inforomacion ante todo y  esta nueva sentencia la pongo luego de:

[INGRESOS TOTALES]: 

    LOAD * 

    FROM (qvd);  

o al final de todo el script?

Not applicable
Author

Carlos olvida mi pregunta no dije nada. Ahora lo pruebo pero creo que funciona.