Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buen dia comunidad,
Tengo error en la siguiente expresión. Ya he intentado de todo.
If(
RangeMax(
If([Capital con Mora 1-30 Días]>1, [Capital a Vencer]+[Capital con Mora 1-30 Días],0),
If([Capital con Mora 31-60 Días]>1, [Capital a Vencer]+
Sum([Capital con Mora 1-30 Días])+
Sum([Capital con Mora 31-60 Días]),0),
If([Capital con Mora 61-90 Días]>1, [Capital a Vencer]+
Sum([Capital con Mora 1-30 Días])+
Sum([Capital con Mora 31-60 Días])+
Sum([Capital con Mora 61-90 Días]),0)=
If([Capital con Mora 1-30 Días]>=1, [Capital a Vencer]+[Capital con Mora 1-30 Días],0);
RangeMax(
If([Capital con Mora 1-30 Días]>1, [Capital a Vencer]+[Capital con Mora 1-30 Días],0),
If([Capital con Mora 31-60 Días]>1, [Capital a Vencer]+
Sum([Capital con Mora 1-30 Días])+
Sum([Capital con Mora 31-60 Días]),0),
If([Capital con Mora 61-90 Días]>1, [Capital a Vencer]+
Sum([Capital con Mora 1-30 Días])+
Sum([Capital con Mora 31-60 Días])+
Sum([Capital con Mora 61-90 Días]),0),0)))
Lo esperado es: =SI($CB16=BU16;$CB16;0)
Hola Shirlys,
Estoy deacuerdo con las ideas que te recomendo Fernando, en efecto, comence analizando tu problema con la expresion que colocastes inicialmente, y llegue a una conclusion similar, la expresion tal como esta escrita inicialemente es compleja, porque es muy larga, aparte de que el nomber de algunas variables son muy largos, lo cual complica identificar los errores.
Estoy anexando una applicacion que create con el archivo Excel que comparte, no el de este thread, creo que en el thread de la semana pasada o antepasada, pero el nombre de las columnas es el mismo; estas son algunas de mis ideas:
Observaciones:
Acciones:
Existen ideas un poco mas avanzadas que nos permiten simplicar la logica en Qlik, aplicables a tu problema, pero no las incluyo (todavia) hasta que revices lo que aqui propongo.
Anexo el QVF que carga el archivo Excel que has compartido, implementa las variables Cap_30D, Cap_60D y Cap_90D; ademas de las variables Mora_xxx (estas estan en la seccion de variables)
Finalmente:
La ultima imagen que anexo es la expresion que estabas contruyendo, el reto es grande cuando tienes que utilizar nombres de columnas muy largos, con espacios y corchetes, al final, uno se pierde con tanto texto; Algo que me intriga viendo la expresion, porque la Mora a 30 Dias no utiliza a Suma del Capital con Mora 1-30 dias, mientras que las expresiones para Mora a 60 y 90 dias si utilizan sumas (Observacion, solo mi intrigan, porque no me explico la diferencia)
Espero que mi respuesta ayude de algun modo a resolver el problema, creo que si explico como "simplificar" las variables para hacernos la vida mas relajada!!!
Shirlys,
En referencia a la expresion SET analysis para calcular la linea de total T2 (aclaratoria, el reporte incluye una segunda linea de total T2 que excluye los dos ultimos meses de la data.
Sum( If( $(Range_MAX_var) = $(Mora_CV30), $(Range_MAX_var), 0 ))
Sum({<"=12*Year(Today())+Month(Today())-12*Year([cl.Fecha de Originación])-Month([cl.Fecha de Originación])"={'3'}>} If( $(Range_MAX_var) = $(Mora_CV30), $(Range_MAX_var), 0 ))
Luego lo que se tiene que hacer es utilizar la misma forma cambiando el parametro de '3' a '2'.
Experimenta utilizando { '2', '3' } en vez de utilizar restar el total de cada mes.Espero que ayude !!!
Hola Shir.
La expresión es tan larga que es difícil seguirla... Pero van algunos consejos:
1) Si cada mes de la tabla acumula varias filas del modelo, debería haber un Sum(), Max(), etc. afuera de toda la expresión. Si aparece el símbolo "-" es porque la expresión devuelve más de un valor y no sabe cuál mostrar (también puede ser porque devuelve null() o infinito).
2) Para probar separá la expresión en partes más chicas en varias columnas.
3) Reemplazá expresiones largas por Column(1), Column(2), etc. para hacer referencia a medidas anteriores de la misma tabla.
4) Cuando nada funcione, a modo de prueba grabá en columnas nuevas del modelo los cálculos intermedios o marcas que simplificarán la expresión del gráfico. Obvio no siempre es lo mejor pero ayuda a encontrar el error.
Saludos! Fernando
Hola Fer como andas? si te entiendo lo que me dices. Soy nueva en Qlik, Ya he intentado todo pero creo que lo que hago mal es la unión de todas la expresión. Es decir cada columna tiene armada una expresión por ejemplo Columna1 es la de Rango max de 6 filas. Columna2 es un IF también de 6 filas. ect. adjunto el excel que tengo como ejemplo de lo que debo hacer en qlik. Tengo que calcular la columna que pinte en verde.
En qué versión estás trabajando?
En el editor de expresiones de las últimas versiones de Qlik Sense, abajo te informa si tenés mal la sintaxis.
Veo que hay un punto y coma por la mitad que no debería ir. Y otra posibilidad es que tenés mal anidados los if y paréntesis...
Modificala hasta que no salga "Error en la expresión". Si te confunde lo largo de las expresiones reemplazá temporalmente las cadenas de los Sum() por cualquier número...
Fer, si yo pienso que deben ser mal anidados los paréntesis o que me falta {}.
Gracias por tu tiempo Fernando. Seguiré intentándolo.
Hola Shirlys,
Estoy deacuerdo con las ideas que te recomendo Fernando, en efecto, comence analizando tu problema con la expresion que colocastes inicialmente, y llegue a una conclusion similar, la expresion tal como esta escrita inicialemente es compleja, porque es muy larga, aparte de que el nomber de algunas variables son muy largos, lo cual complica identificar los errores.
Estoy anexando una applicacion que create con el archivo Excel que comparte, no el de este thread, creo que en el thread de la semana pasada o antepasada, pero el nombre de las columnas es el mismo; estas son algunas de mis ideas:
Observaciones:
Acciones:
Existen ideas un poco mas avanzadas que nos permiten simplicar la logica en Qlik, aplicables a tu problema, pero no las incluyo (todavia) hasta que revices lo que aqui propongo.
Anexo el QVF que carga el archivo Excel que has compartido, implementa las variables Cap_30D, Cap_60D y Cap_90D; ademas de las variables Mora_xxx (estas estan en la seccion de variables)
Finalmente:
La ultima imagen que anexo es la expresion que estabas contruyendo, el reto es grande cuando tienes que utilizar nombres de columnas muy largos, con espacios y corchetes, al final, uno se pierde con tanto texto; Algo que me intriga viendo la expresion, porque la Mora a 30 Dias no utiliza a Suma del Capital con Mora 1-30 dias, mientras que las expresiones para Mora a 60 y 90 dias si utilizan sumas (Observacion, solo mi intrigan, porque no me explico la diferencia)
Espero que mi respuesta ayude de algun modo a resolver el problema, creo que si explico como "simplificar" las variables para hacernos la vida mas relajada!!!
Buen día Arnaldo,
De acuerdo a tus recomendaciones hice lo siguiente:
1. Creé todas las variables que necesito.
Pero luego cuando armo la expresión que necesito usando esas variables no calcula nada si no que muestra la expresión en la columna de la tabla:
Esta es la expresión que armé para la mora de 30 días.
2.Renombrar en el script los campos de mora 30,60,90,120,150,180,210 (Creo que es lo mismo que los alias que me comentas , se me hizo más fácil así)
Arme la expresion If con la que he estado luchando, ahora no me da error de expresion pero en la tabla toda la columna me da 0,00.
Adjunto excel: es el reporte que hace el departamento de cobranzas, la pestaña MES-AÑO ENTREGABLE es el resultado final. La pestaña Cartera es donde estan todas las formulas armadas previamente, luego hacen una tabla dinámica para sacar el entregable.
También adjunto app qvf.
excel CP: es el reporte cargado en qlik para trabajar.
Reporte ejemplo: Es el reporte que me enviaron como guia.
Espero haberme explicado.Gracias.
Hola @ShirSandoval
Anexo la ultima version del projecto luego de simplificar las expresiones, te explico por mensaje privado antes de escribir aqui en detalle!
Saludos, Arnaldo
Hola Shirlys,
Estoy actualizando el topico en la comunidad, ahora que hemos encontrado su solucion:
if(MORA_60 > 1, [Capital a Vencer] + MORA_30 + MORA_60, 0)If(MORA_90 > 1, [Capital a Vencer] + MORA_30 + MORA_60 + MORA_90, 0)
En todos los casos, son expresiones simples, sin funciones agregadas (Sum()), porque cada una de estas formulas son transaccionales (o fila por fila del archivo Excel).
RangeMax( $(Mora_CV30), $(Mora_CV60), $(Mora_CV90), $(Mora_CV120), $(Mora_CV150), $(Mora_CV180), $(Mora_CV210), $(Mora_CV+210))
Es una formula transactional, sin SUM() que aplica a cada fila de datos (row of data).
Sum( If( $(Range_MAX_var) = $(Mora_CV60), $(Range_MAX_var), 0 ))
Observa que la funcion agregada SUM() se utilizo una sola vez; esa es una de las complicaciones, implementar funciones agregadas fuera de lugar, aparte de lo largo de las expresiones que la solucion tenia inicialmente; tambien observa la utilizad de la variable: Range_MAX_var, simplifico mucho.
Shirlys,
En referencia a la expresion SET analysis para calcular la linea de total T2 (aclaratoria, el reporte incluye una segunda linea de total T2 que excluye los dos ultimos meses de la data.
Sum( If( $(Range_MAX_var) = $(Mora_CV30), $(Range_MAX_var), 0 ))
Sum({<"=12*Year(Today())+Month(Today())-12*Year([cl.Fecha de Originación])-Month([cl.Fecha de Originación])"={'3'}>} If( $(Range_MAX_var) = $(Mora_CV30), $(Range_MAX_var), 0 ))
Luego lo que se tiene que hacer es utilizar la misma forma cambiando el parametro de '3' a '2'.
Experimenta utilizando { '2', '3' } en vez de utilizar restar el total de cada mes.Espero que ayude !!!