Qlik Community

QlikView App Dev

Discussion Board for collaboration related to QlikView App Development.

cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Uso de la funcion 'EVALUATE'

<body><p> </p> <p> </p> <p>Estimados, me acabo de unir a este foro y estoy dando mis primeros pasos en QV. Tengo una problem&aacute;tica con un proceso que necesito realizar. </p> <p>tengo una planilla excel que posee tres campos, <strong>obj_id</strong>,<strong> nombre_campo</strong>, <strong>formula</strong>. El campo <strong>obj_id</strong> corresponde al id de una serie de objetos, el campo <strong>nombre_campo</strong> corresponde a los nombres de campo de una tabla QVD (que adem&aacute;s contiene el campo <strong>obj_id</strong>, y el campo formula indica si el campo ser&aacute; considerado dentro de una suma o no. por ej. </p> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="151" valign="top"> <p>obj_id</p> </td> <td width="151" valign="top"> <p>nombre_campo </p> </td> <td width="151" valign="top"> <p>formula</p> </td> </tr> <tr> <td width="151" valign="top"> <p>1</p> </td> <td width="151" valign="top"> <p>CAMPO_1</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>1</p> </td> <td width="151" valign="top"> <p>CAMPO_2</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>1</p> </td> <td width="151" valign="top"> <p>CAMPO_3</p> </td> <td width="151" valign="top"> <p> </p> </td> </tr> <tr> <td width="151" valign="top"> <p>1</p> </td> <td width="151" valign="top"> <p>CAMPO_4</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>2</p> </td> <td width="151" valign="top"> <p>CAMPO_1</p> </td> <td width="151" valign="top"> <p> </p> </td> </tr> <tr> <td width="151" valign="top"> <p>2</p> </td> <td width="151" valign="top"> <p>CAMPO_2</p> </td> <td width="151" valign="top"> <p> </p> </td> </tr> <tr> <td width="151" valign="top"> <p>2</p> </td> <td width="151" valign="top"> <p>CAMPO_3</p> </td> <td width="151" valign="top"> <p> </p> </td> </tr> <tr> <td width="151" valign="top"> <p>2</p> </td> <td width="151" valign="top"> <p>CAMPO_4</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>3</p> </td> <td width="151" valign="top"> <p>CAMPO_1</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>3</p> </td> <td width="151" valign="top"> <p>CAMPO_2</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>3</p> </td> <td width="151" valign="top"> <p>CAMPO_3</p> </td> <td width="151" valign="top"> <p>Suma</p> </td> </tr> <tr> <td width="151" valign="top"> <p>3</p> </td> <td width="151" valign="top"> <p>CAMPO_4</p> </td> <td width="151" valign="top"> <p> </p> </td> </tr> </tbody> </table> <p> </p> <p>Desde esta tabla excel creo una nueva solamente con el <strong>obj_id</strong> y con la composicion de la formula, por ej:</p> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="151" valign="top"> <p>obj_id</p> </td> <td width="180" valign="top"> <p>formula</p> </td> </tr> <tr> <td width="151" valign="top"> <p>1</p> </td> <td width="180" valign="top"> <p>CAMPO_1+CAMPO_2+CAMPO_4</p> </td> </tr> <tr> <td width="151" valign="top"> <p>2</p> </td> <td width="180" valign="top"> <p>CAMPO_4</p> </td> </tr> <tr> <td width="151" valign="top"> <p>3</p> </td> <td width="180" valign="top"> <p>CAMPO_1+CAMPO_2+CAMPO_3</p> </td> </tr> </tbody> </table> <p> </p> <p>A otra tabla, que sus campos son <strong>obj_id</strong>, <strong>CAMPO_1</strong>, <strong>CAMPO_2</strong>,....., <strong>CAMPO_N L</strong>e uno (<strong>left join</strong>) la formula creada anteriormente, esto para realizar una suma de los campos indicados por la formula al momento de leer la tabla y quedar solamente con el <strong>obj_id </strong>y la suma (de los campos indicados por a esta altura el campo formula). </p> <p> </p> <p>Entonces tengo el sgte c&oacute;digo:</p> <p>load</p> <p>obj_id,</p> <p>evaluate(formula) as sumadevalores</p> <p> </p> <p>Y me arroja valores nulos.... </p> <p> </p> <p>Alguien podr&iacute;a asesorarme??,  gracias. </p> <p> </p> <h4></h4> <p> </p> <p> </p> <p> </p> <p><col span="2" width="79"></col></p> <p> </p> <p> </p> <p> </p> <p> </p></body>

8 Replies
mbernales
Contributor III
Contributor III

Realmente no me queda muy clara tu duda, podrías explicar un poco más

Not applicable
Author

sube un QVW con un ejemplo de tu info para poder echarle un ojo, saludos

Not applicable
Author

Antes que nada gracias por el tiempo.

Mira, el tema es fácil (la explicación al menos). Tengo una tabla que tiene un campo obj_id, y una serie de campos, CAMPO_1, CAMPO_2, ... , CAMPO_N. Necesito sumar los campos, el problema es que para cada objeto la suma no esta dada por los mismos campos. Por ej. para el objeto con id= 1 la suma esta dada por CAMPO_1 + CAMPO2. Para el objeto con id=2 la suma esta dada por la suma de los CAMPO_3+CAMPO_1, ETC.

Lo que estoy tratando de hacer es una tabla excel donde indico para cada obj_id como esta compuesta la suma....(formula)

entonces luego con left join agrego esa formula a cada registro de la tabla que contiene todos los valores, para luego poder realizar la suma de acuerdo a su formula particular.

espero que ahora se entienda. Y sorry por el post anterior. No me fije que quedaría tan desordenado.

Not applicable
Author

que tal fernat pudiste resolver este detalle de la suma con formula, te comento que yo tengo la misma duda solo que yo tengo dos consultas y dentro del qlik estoy haciendo un join y necesito sumar los registros de la segunda tabla a un registro en especifico de la primera consulta, espero me puedas ayudar en caso de que ya tengas resuelto el caso.

saludos.

Not applicable
Author

My spanish is not that good..so...

I think you should LOAD your "Formula" a it is... and use a Variable to calculate your expression...

Not applicable
Author

No, no pude resolverlo, almenos de forma elegante. Como se supone que los campos a considerar en la suma eran "variables", es decir, para un codigo en particular se sumaban algunos campos y para otros codigos se sumaban otros, lo solucione con un if dentro del script. Creo que la forma optima de hacerlo era creando un campo formula, que contviera los campos a sumar para cada codigo:

id=1

suma= campo1+campo2+campo3

id=2

suma=campo2+campo3+campo4.

La formula pude crearla sin problemas, el tema es que en el script al colocar:

evaluate(formula) as resultadoSuma

Esto no me entrega valores.

Sorry por no poder ayudarte mas.

Miguel_Angel_Baeyens

Hola!

¿Has comprobado que campo1, campo2, etc son numéricos y por tanto evaluables por la función EVALUATE? Procura que en la carga lo que nos indicas como "suma" sea un valor numérico (cuidado por tanto con comas, puntos y demás separadores de decimales o miles). Si te sirve de ayuda, prueba, en el script de carga con algo similar a

Evaluate(Num(campo1+campo2+campo3))


Un saludo.

Not applicable
Author

Gracias por tu tiempo Miguel. Verificare lo que me indicas y te cuento el resultado.

Gracias.