Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenos Días,
Por favor me pueden ayudar a optimizar el siguiente script ya que al momento de mostrar información en los tableros me da TimeOut pero cuando filtro por unos pocos datos me despliega información
El script que tengo es el siguiente
MES DESTINATARIO
=if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=1,'MES 1',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=2,'MES 2',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=3,'MES 3',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=4,'MES 4',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=5,'MES 5',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=6,'MES 6',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=7,'MES 7',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=8,'MES 8',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=9,'MES 9',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=10,'MES 10',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=11,'MES 11',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=12,'MES 12',
))))))))))))
TOTAL MESES
count(distinct TRA_DESTINATARIO)
PORCENTAJE
count(distinct TRA_DESTINATARIO)/sum(total(Aggr(count(distinct TRA_DESTINATARIO),TRA_DESTINATARIO)))
Filtro con pocos datos maestra información
Pero cuando quiero que me despliegue la información de todo un año o mas me da TimeOut como puedo optimizar los cálculos o que puedo hacer?
Hola Miguel,
En script no puedes usar Aggr(), ya que es una función de gráfico, sino que tienes que hacer GROUP BY.
Algo así como:
LOAD TRA_DESTINATARIO AS TRA_DESTINATARIO
Count(DISTINCT Mes_Registro) AS NUM_MESES
RESDENT XXXXXXXXX
GROUP BY TRA_DESTINATARIO;
Y luego ya en los objetos usas una expresión similar a:
Pick(NUM_MESES, 'MES 1', 'MES2', ...)
Espero que te sirva,
H
Hola Miguel,
Al menos la expresión:
=if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=1,'MES 1',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=2,'MES 2',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=3,'MES 3',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=4,'MES 4',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=5,'MES 5',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=6,'MES 6',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=7,'MES 7',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=8,'MES 8',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=9,'MES 9',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=10,'MES 10',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=11,'MES 11',
if (Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)=12,'MES 12',
))))))))))))
, la podrías simplificar de la siguiente forma:
=Pick(Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO),
'MES 1',
'MES 2',
'MES 3',
'MES 4',
'MES 5',
'MES 6',
'MES 7',
'MES 8',
'MES 9',
'MES 10',
'MES 11',
'MES 12')
, así solo se evaluaría "Aggr(count(distinct Mes_Registro),TRA_DESTINATARIO)" una sola vez. Si además esta expresión Aggr() la usas en más sitios, podrías crearte una variable.
Espero que te ayude... La función Pick() es muy útil para estos casos (mira también la función Match() porque ambas combinadas te pueden ayudar en casos similares).
Saludos,
H
Hola Héctor,
Le cambie por la función Pick, y filtro por año me sigue dando TimeOut , filtro por algunos destinatarios me funciona y me despliega información hay alguna forma mas de optimizar porque la información que tengo es mucha
¿Puedes adjuntar la app para que te ayudemos?
Gracias Héctor
El QVF pesa 1.50 GB no le puedo adjuntar
Se puede realizar el Pick en un script para que me guarde en un QDV para así no realizar el calculo en el QVF ¿como podría cambiarle a script o se mantiene el mismo formato?
Hola Miguel,
Si el cálculo que necesitas no es susceptible de verse modificado por las selecciones que haga el usuario entonces sí que lo podrías hacer en el script, sin duda.
Saludos,
H
Gracias por tu ayuda Héctor y el formato se mantiene el mismo?
Hola Miguel,
En script no puedes usar Aggr(), ya que es una función de gráfico, sino que tienes que hacer GROUP BY.
Algo así como:
LOAD TRA_DESTINATARIO AS TRA_DESTINATARIO
Count(DISTINCT Mes_Registro) AS NUM_MESES
RESDENT XXXXXXXXX
GROUP BY TRA_DESTINATARIO;
Y luego ya en los objetos usas una expresión similar a:
Pick(NUM_MESES, 'MES 1', 'MES2', ...)
Espero que te sirva,
H