Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ShirSandoval
Creator
Creator

% Porcentaje

Buenas tardes comunidad necesito calcular un porcentaje

La expresión sería la siguiente pero me da números infinitos. 

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])"={'1'}>} 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])"={'2'}>} If( $(Range_MAX_var) = $(Mora_CV30), $(Range_MAX_var), 0 ))

/

Sum ({<[cl.Capital]>} [cl.Capital]) -
Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={1}>} [cl.Capital]) -
Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={2}>} [cl.Capital])

Gracias de antemano. 

Labels (3)
4 Solutions

Accepted Solutions
ArnadoSandoval
Specialist II
Specialist II

Hola @ShirSandoval 

Esta respuesta la escribire por parte, poque esta interface ha rechazado la respuesta en varias ocaciones !!! asi que la picare en retazos !!!! LOL

Vamos a compartir con la comunidad la solucion a los probemas y retos que esta solucion contiene, colocare un resumen de las acciones tomadas para resolver lo retos:

T-2 Dinamico:

En los primeros modelos nosotros hard-coded (?) los meses '1' y '2', por lo cual cuando se seleccionaba una fecha del reporte diferente al ultimo mes presente en los datos, los resultados aparecian no eran precisos!

Trate de calcular los totales de los ultimos dos meses utilizando el campo de Fecha de Reporte, pero los resultados no reconciliaban, existian transacciones de un mes que no aparecian, por la forma en que el SET anaysis dividia los datos! asi que la opcion de seleccionar los ultimos dos meses, utilizando el sub-campo MonthsAgo de la Fecha  de Reporte se presento mas atractiva, y menos confusa, aparte que habia funcionado anteriormente, solo que los utilizamos de una forma muy generica. 

La forma de que T-2 sea dinamico es por medio de la function: GetFieldSelections( <field-name> ); en el caso de este reporte, queremos saber que ha sido seleccionado del campo: [Fecha_Reporte.autoCalendar.YearMonth] asi que agregue una nueva variable:

GetFechaReport

Expresion:

=GetFieldSelections([Fecha_Reporte.autoCalendar.YearMonth])

Notas:

  • Ese signo de igualdad es magico cuando la variable se utilliza en SET analysis. Es parte de la expresion de la variables.
  • Todas las pruebas (tests) que he hecho fueron haciendo selecciones unicas de la Fecha_Reporte, si seleccionan mas de una fecha del reporte, los resultados seran impredecibles, te recomiendo que configures este campo para que solo acepte una sola seleccion!
  • Esta variable se utiliza para calcular el mes mas reciente del campo-subcampo: [Fecha de Originacion] y [MonthsAgo]; de alli la razon del signo magico de igualdad
  • Esta variable no la muestro en ninguna de las Sheets.
  • Es necesarion que se seleccione un mes para que el reporte funcione!

Luego esta variable se utiliza, para calcular, dinamicamente, el mes mas reciente en base a la fecha del reported seleccionado.

.... continuara en otro "Reply" ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.

View solution in original post

ArnadoSandoval
Specialist II
Specialist II

@ShirSandoval  ... continuacion ...

Variable: Earliest_MonAgo

Expresion:

=Min({<"=Dual(Year([Fecha_Reporte])&'-'&Month([Fecha_Reporte]),MonthStart([Fecha_Reporte]))"={"$(GetFechaReport)"}>} [cl.Fecha de Originación.autoCalendar.MonthsAgo])

Notas:

  • Aqui consumo la variable GetFechaReport con su signo de igualdad magico.
  • Esta expression de SET analisis determinal el Minimo MonthsAgo para la seleccion actual de la Fecha_Reporte (esto es para eliminar el filtro magico: { '1', '2' } recuerdas!
  • En el Sheet: View Expressions, muestro el valor de esta variable en un control KPI.
  • Tambien modifique la segunda tabla en este Sheet para que solo mostrase, Fecha ReporteFecha de Originacion (los Argentinos hablan raro) y Los MonthsAgo de la fecha de originacion, asi se verifica que la variable nos informa correctamente, de forma dinamica, de los ultimos dos meses dependiendo en la seleccion de Fecha_Reporte.
  • Esta variable tambien implementa un signo magico de igualdad, porque sera utilizada mas adelante en una expresion de SET analysis.

Variable: Earliest_MonAgo-1

Expression

=$(Earliest_MonAgo) + 1

Notas:

  • El nombre de la variable debio ser +1, pero ya la habia utilizado por todas partes para cambiarla, asi que vivira con esa psicosis de tener el nombre equivocado (jajajaja). Ella nos dice el segundo mes (ago) para la seleccion que hemos hecho de: Fecha_Reporte.
  • La expresion de la variable tambien utiliza un signo de igualdad magico.
  • Me parecio mas practico sumarle 1 a la variable Earliest_MonAgo que re-escribir la expresion largisima.
  • El valor de esta variable tambien lo muestro en la Hoja: View Expressions, asi podemos verificar que cuando seleccionamos una Fecha_Reporte, ellas nos dan los dos meses que debemo excluir para el calculo de los T-2 !!! 
Reporte Vintage Final II:
Ahora que tenemos las variables que identifican los ultimos dos meses (deberian ser los primeros dos meses,  todo depende de como interpretemos la data) para la Fecha_Reporte, trabaje en la Hoja: Reporte Vintage Final II, aqui elimine todos los controles de KPI del pasado, e introduje los que nos ayudaran a implementar las expresiones; tambien agregue una franja "Last 2 Months" porque realmente quiero estar 100% seguro que son calculados correctamente.
 
La franja de Totales es directa, asi que no dramas aqui.
La franja de T-2 la revisite en todas sus columna, porque aqui tenemos que implementar el nuevo SET analysis que dinamicamente seleccione los ultimos dos meses (o los primero 2 meses, depende del cristal con que se miren los datos), asi que la expresion antigua, calculado los dos ultimos meses: 

 

... continuara ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.

View solution in original post

ArnadoSandoval
Specialist II
Specialist II

@ShirSandoval  ... continuacion ...

Esta interface rechazo casi toda la respuesta anterior, fui eliminando parrafos, hasta que al final lo acepto

Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'1','2'}>} [cl.Capital])

Se convierte en: 

Sum ({<[Capital a Vencer],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'$(Earliest_MonAgo)', '$(Earliest_MonAgo-1)'}>} [cl.Capital])

Si te fijas, solo cambiamos el 1 por $(Earliest_MonAgo) y 2 con $(Earliest_MonAgo-1)

En realidad, nuestra nueva expresion de SET analysis ahora es:
 

{<[Capital a Vencer],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'$(Earliest_MonAgo)', '$(Earliest_MonAgo-1)'}>}

y es la que utilizaremos en todas las expresiones en donde estemo excluyendo esos dos meses, dinamicamente!

 

.... continuara ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.

View solution in original post

ArnadoSandoval
Specialist II
Specialist II

Hi @ShirSandoval  no habia terminado de subir toda las infomacion sobre este problema, esta es la continuacion.

Verificacion-Reconciliation:
La reconciliacion fue hecha con las nuevas expresiones en la hoja de Reporte Vintage Final II
 
Con la hoja: Reporte Vintage I, unicamente actualice todas las expresiones con la expresion del nuevo SET analysis en la franja T-2, mi reconciliacion fue visual solamente!
 
Conclusion:
Estoy confidente que los calculos de T-2 son precisos!
Ahora me enfoco con los porcentajes, lo cual publico a continuacion !!!
 
Sabes que, me funciono al primer intento 😮 te anexo la nueva version del reporte: Vintage copia-ARS-7.qvf; esta version utiliza la expresion de SET analysis que te envie en el correo anterior; viendo tu formula y la que utilice, son practicamente la misma expresion; pero  en la tuya, no recuerdo exactamente como se construia lo que comparabamos con {'1', '2'} como ahora no es importante explicar esa razon, porque sabemos que funciona con el nuevo SET analysis !!!
 
Anexos:
Vintage copia-ARS-6.qvf: Es la solucion excluyendo los porcentajes!
Vintage copia-ARS-7.qvf: Es la solucion incluyendo los porcentajes!
New_Reconciliation.xlsx: Muestra las reconciliaciones para Octubre-2020 y Marzo 2020 !!!
 
Ahora si, la respuesta es completa.
Arnaldo Sandoval
A journey of a thousand miles begins with a single step.

View solution in original post

8 Replies
ArnadoSandoval
Specialist II
Specialist II

Hola Shirlys 🙂

Sum ({<[cl.Capital]>} [cl.Capital]) -
Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={1}>} [cl.Capital]) -
Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={2}>} [cl.Capital])

No es la que genera Qlik, a mi me genero la siguiente expresion para 2 MonthsAgo

Sum({<"=12*Year(Today())+Month(Today())-12*Year([cl.Fecha de Originación])-Month([cl.Fecha de Originación])"={'2'}>} [cl.Capital])

Mientras que la expresion del mes anterior seria:

Sum({<"=12*Year(Today())+Month(Today())-12*Year([cl.Fecha de Originación])-Month([cl.Fecha de Originación])"={'1'}>} [cl.Capital])

Ahora bien, para obtener el gran total del mes anterior y hace dos meses puedes utilizar una sola expresion, que combina las dos anteriores:

Sum({<"=12*Year(Today())+Month(Today())-12*Year([cl.Fecha de Originación])-Month([cl.Fecha de Originación])"={'1', '2'}>} [cl.Capital])

El SET expresion es generado por Qlik automaticamente, no he tratado de interpretarla, solo que produce el valor experado.

Te recomiendo utilizar la expresion combinada (la ultima que inclui)

Saludos,

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
ShirSandoval
Creator
Creator
Author

Arnaldo buen dia Gracias por tu respuesta.  

Estoy intentando con lo que me respondiste pero sigo teniendo problemas. Modifiqué de acuerdo a tus recomendaciones, quedó asi:
 
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])"={'1','2'}>} 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])"={'1','2'}>} [cl.Capital])

 
Resultado:
 

qlik.PNG

 
 
ArnadoSandoval
Specialist II
Specialist II

Hola @ShirSandoval 

Esta respuesta la escribire por parte, poque esta interface ha rechazado la respuesta en varias ocaciones !!! asi que la picare en retazos !!!! LOL

Vamos a compartir con la comunidad la solucion a los probemas y retos que esta solucion contiene, colocare un resumen de las acciones tomadas para resolver lo retos:

T-2 Dinamico:

En los primeros modelos nosotros hard-coded (?) los meses '1' y '2', por lo cual cuando se seleccionaba una fecha del reporte diferente al ultimo mes presente en los datos, los resultados aparecian no eran precisos!

Trate de calcular los totales de los ultimos dos meses utilizando el campo de Fecha de Reporte, pero los resultados no reconciliaban, existian transacciones de un mes que no aparecian, por la forma en que el SET anaysis dividia los datos! asi que la opcion de seleccionar los ultimos dos meses, utilizando el sub-campo MonthsAgo de la Fecha  de Reporte se presento mas atractiva, y menos confusa, aparte que habia funcionado anteriormente, solo que los utilizamos de una forma muy generica. 

La forma de que T-2 sea dinamico es por medio de la function: GetFieldSelections( <field-name> ); en el caso de este reporte, queremos saber que ha sido seleccionado del campo: [Fecha_Reporte.autoCalendar.YearMonth] asi que agregue una nueva variable:

GetFechaReport

Expresion:

=GetFieldSelections([Fecha_Reporte.autoCalendar.YearMonth])

Notas:

  • Ese signo de igualdad es magico cuando la variable se utilliza en SET analysis. Es parte de la expresion de la variables.
  • Todas las pruebas (tests) que he hecho fueron haciendo selecciones unicas de la Fecha_Reporte, si seleccionan mas de una fecha del reporte, los resultados seran impredecibles, te recomiendo que configures este campo para que solo acepte una sola seleccion!
  • Esta variable se utiliza para calcular el mes mas reciente del campo-subcampo: [Fecha de Originacion] y [MonthsAgo]; de alli la razon del signo magico de igualdad
  • Esta variable no la muestro en ninguna de las Sheets.
  • Es necesarion que se seleccione un mes para que el reporte funcione!

Luego esta variable se utiliza, para calcular, dinamicamente, el mes mas reciente en base a la fecha del reported seleccionado.

.... continuara en otro "Reply" ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
ArnadoSandoval
Specialist II
Specialist II

@ShirSandoval  ... continuacion ...

Variable: Earliest_MonAgo

Expresion:

=Min({<"=Dual(Year([Fecha_Reporte])&'-'&Month([Fecha_Reporte]),MonthStart([Fecha_Reporte]))"={"$(GetFechaReport)"}>} [cl.Fecha de Originación.autoCalendar.MonthsAgo])

Notas:

  • Aqui consumo la variable GetFechaReport con su signo de igualdad magico.
  • Esta expression de SET analisis determinal el Minimo MonthsAgo para la seleccion actual de la Fecha_Reporte (esto es para eliminar el filtro magico: { '1', '2' } recuerdas!
  • En el Sheet: View Expressions, muestro el valor de esta variable en un control KPI.
  • Tambien modifique la segunda tabla en este Sheet para que solo mostrase, Fecha ReporteFecha de Originacion (los Argentinos hablan raro) y Los MonthsAgo de la fecha de originacion, asi se verifica que la variable nos informa correctamente, de forma dinamica, de los ultimos dos meses dependiendo en la seleccion de Fecha_Reporte.
  • Esta variable tambien implementa un signo magico de igualdad, porque sera utilizada mas adelante en una expresion de SET analysis.

Variable: Earliest_MonAgo-1

Expression

=$(Earliest_MonAgo) + 1

Notas:

  • El nombre de la variable debio ser +1, pero ya la habia utilizado por todas partes para cambiarla, asi que vivira con esa psicosis de tener el nombre equivocado (jajajaja). Ella nos dice el segundo mes (ago) para la seleccion que hemos hecho de: Fecha_Reporte.
  • La expresion de la variable tambien utiliza un signo de igualdad magico.
  • Me parecio mas practico sumarle 1 a la variable Earliest_MonAgo que re-escribir la expresion largisima.
  • El valor de esta variable tambien lo muestro en la Hoja: View Expressions, asi podemos verificar que cuando seleccionamos una Fecha_Reporte, ellas nos dan los dos meses que debemo excluir para el calculo de los T-2 !!! 
Reporte Vintage Final II:
Ahora que tenemos las variables que identifican los ultimos dos meses (deberian ser los primeros dos meses,  todo depende de como interpretemos la data) para la Fecha_Reporte, trabaje en la Hoja: Reporte Vintage Final II, aqui elimine todos los controles de KPI del pasado, e introduje los que nos ayudaran a implementar las expresiones; tambien agregue una franja "Last 2 Months" porque realmente quiero estar 100% seguro que son calculados correctamente.
 
La franja de Totales es directa, asi que no dramas aqui.
La franja de T-2 la revisite en todas sus columna, porque aqui tenemos que implementar el nuevo SET analysis que dinamicamente seleccione los ultimos dos meses (o los primero 2 meses, depende del cristal con que se miren los datos), asi que la expresion antigua, calculado los dos ultimos meses: 

 

... continuara ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
ArnadoSandoval
Specialist II
Specialist II

@ShirSandoval  ... continuacion ...

Esta interface rechazo casi toda la respuesta anterior, fui eliminando parrafos, hasta que al final lo acepto

Sum ({<[cl.Capital],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'1','2'}>} [cl.Capital])

Se convierte en: 

Sum ({<[Capital a Vencer],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'$(Earliest_MonAgo)', '$(Earliest_MonAgo-1)'}>} [cl.Capital])

Si te fijas, solo cambiamos el 1 por $(Earliest_MonAgo) y 2 con $(Earliest_MonAgo-1)

En realidad, nuestra nueva expresion de SET analysis ahora es:
 

{<[Capital a Vencer],[cl.Fecha de Originación.autoCalendar.MonthsAgo]={'$(Earliest_MonAgo)', '$(Earliest_MonAgo-1)'}>}

y es la que utilizaremos en todas las expresiones en donde estemo excluyendo esos dos meses, dinamicamente!

 

.... continuara ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
ArnadoSandoval
Specialist II
Specialist II

@ShirSandoval 

Cuando utilizo el formatio de codigo </> para publicar una seccion de codigo, el mensaje es rechazado !!!

... continuare ...

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
ShirSandoval
Creator
Creator
Author

Todo funcionó perfectamente, con todos estos cambios que hiciste. Como siempre mil gracias! eres un genio. Gracias por tu tiempo y dedicación para ayudar. 

ArnadoSandoval
Specialist II
Specialist II

Hi @ShirSandoval  no habia terminado de subir toda las infomacion sobre este problema, esta es la continuacion.

Verificacion-Reconciliation:
La reconciliacion fue hecha con las nuevas expresiones en la hoja de Reporte Vintage Final II
 
Con la hoja: Reporte Vintage I, unicamente actualice todas las expresiones con la expresion del nuevo SET analysis en la franja T-2, mi reconciliacion fue visual solamente!
 
Conclusion:
Estoy confidente que los calculos de T-2 son precisos!
Ahora me enfoco con los porcentajes, lo cual publico a continuacion !!!
 
Sabes que, me funciono al primer intento 😮 te anexo la nueva version del reporte: Vintage copia-ARS-7.qvf; esta version utiliza la expresion de SET analysis que te envie en el correo anterior; viendo tu formula y la que utilice, son practicamente la misma expresion; pero  en la tuya, no recuerdo exactamente como se construia lo que comparabamos con {'1', '2'} como ahora no es importante explicar esa razon, porque sabemos que funciona con el nuevo SET analysis !!!
 
Anexos:
Vintage copia-ARS-6.qvf: Es la solucion excluyendo los porcentajes!
Vintage copia-ARS-7.qvf: Es la solucion incluyendo los porcentajes!
New_Reconciliation.xlsx: Muestra las reconciliaciones para Octubre-2020 y Marzo 2020 !!!
 
Ahora si, la respuesta es completa.
Arnaldo Sandoval
A journey of a thousand miles begins with a single step.