
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OPTIMIZACIÓN CONTEO IF
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?
Accepted Solutions


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
¿Puedes adjuntar la app para que te ayudemos?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Gracias por tu ayuda Héctor y el formato se mantiene el mismo?


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
