Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Elegir de forma aleatoria un X% de datos agrupados

Buenas, el problema que tengo es el siguiente. Tengo que mostrar:1)De forma aleatoria un X porcentaje de trámites por Emisor cuando estos tienen mas de 10 trámites. ") Si tienen menos deberá ser un X porcentaje del total de los menores a 10. Pero lo que tengo que mostrar son los trámites son los trámites.

Los datos los saco de un vista en Mysql que como datos relevantes tengo:

idTramite, emisor, mes, año, localidad, descripcion del tramite.

Lo ideal sería que además yo pudiera filtrar por año, mes o localidad y recién allí se generara en una tabla pivotante los registros de forma aleatoria.

Por ejemplo supongamos que Juan tiene 20 trámites y Pedro 100 luego de aplicar los filtros y queriendo un 10%, me debería mostrar 2 trámites de Juan y 10 de Pedro.

No logro ni tengo idea, como hacer para que me tome un 10% ( o mejor aún un X %) de la cantidad de trámites de cada emisor o sea el punto 1), el punto 2) no me preocupa tanto.

Alguna idea? Alguna pregunta? Desde ya muchas gracias!

2 Replies
othniel2014
Contributor III
Contributor III

No estoy 100% seguro, pero creo que la funcion Rand() en una tabla pivote genera un numero aleatorio por recarga.

Aunque es cierto que cada filtro que hagas mostrara un numero aleatorio distinto, notaras que si seleccionas el mismo filtro conservara el mismo numero aleatorio generado de la funcion Rand().

Mipregunta es, ¿Es muy necezario generar un numero aleatorio de campos? ¿No puedes definir que tantos Tramites ver dependiendo del numero de Tramites que tenga?.

Realice un ejemplo, tal vez haya muchas formas de hacerlo mucho mejores.

Por favor ver el Script y la imagen.

En la imagen tengo 2 tablas pivotes:

Tabla Pivote 1 Calculo1 = Sum(Monto)

Tabla Pivote 1 Calculo2 = Round(Rand() * (100)  / 40)

Tabla Pivote 2 Calculo1 = Sum(Monto)

Tabla Pivote 2 Calculo2 = Sum(if(Round(Rand() * (100)  / 40) = 0, 0, Monto))

 

El Calculo 2 de la primera Tabla pivote era para ver el comportamiento del valor Rand(), en realidad puedes añadirle cualquier cosa al valor Rando, lo hice de esta manera para que me generara algunos valores distintos.

El Calculo 2 de la segunda Tabla pivote tiene una condicion que dice que si el valor aleatorio es igual a cero, poner cero, sino el valor de Monto. Como Tabla final, En las propiedades de la tabla pivote 2 enla pestaña de Presentacion, active quitar valores en cero, "Supress Zero-Values". Luego quite el Calculo 1. Aleatoriamente este te presentara solo algunos tramites.

 

__.png

Data:
LOAD * INLINE [
    idTramite, emisor, fecha, localidad, descripcion, Monto
    1, sfsasd, 15/09/18, panama, sfsasd, 73
    2, sfsasd, 16/09/18, panama, sfsasd, 88
    3, sfsasd, 17/09/18, panama, sfsasd, 82
    4, sfsasd, 18/09/18, panama, sfsasd, 75
    5, sfsasd, 19/09/18, panama, sfsasd, 89
    6, sfsasd, 20/09/18, panama, sfsasd, 81
    7, sfsasd, 21/09/18, panama, sfsasd, 74
    8, sfsasd, 22/09/18, panama, sfsasd, 83
    9, sfsasd, 23/09/18, panama, sfsasd, 87
    10, sfsasd, 24/09/18, panama, sfsasd, 75
    11, sfsasd, 25/09/18, panama, sfsasd, 73
    12, sfsasd, 26/09/18, panama, sfsasd, 78
    13, sfsasd, 27/09/18, panama, sfsasd, 78
    14, sfsasd, 28/09/18, panama, sfsasd, 82
    15, sfsasd, 29/09/18, panama, sfsasd, 78
    16, sfsasd, 30/09/18, panama, sfsasd, 76
    17, casdfvwr, 01/10/18, us, casdfvwr, 83
    18, casdfvwr, 02/10/18, us, casdfvwr, 85
    19, qwedca, 03/10/18, colombia, qwedca, 88
    20, qwedca, 04/10/18, colombia, qwedca, 76
    21, qwedca, 05/10/18, colombia, qwedca, 78
    22, qwedca, 06/10/18, colombia, qwedca, 84
    23, advmdfo, 07/10/18, costa rica, advmdfo, 82
    24, advmdfo, 08/10/18, costa rica, advmdfo, 84
    25, adwore, 09/10/18, nicaragua, adwore, 83
    26, adwore, 10/10/18, nicaragua, adwore, 88
    27, aspvwro, 11/10/18, españa, aspvwro, 74
    28, asdvmwo, 12/10/18, brasil, asdvmwo, 81
    29, oyutrrt, 13/10/18, argentina, oyutrrt, 81
    30, oyutrrt, 14/10/18, argentina, oyutrrt, 77
    31, oyutrrt, 15/10/18, argentina, oyutrrt, 78
    32, evoirtm, 16/10/18, panama, evoirtm, 80
    33, ofgmrbt, 17/10/18, us, ofgmrbt, 84
    34, rbofgk, 18/10/18, colombia, rbofgk, 83
    35, fborbtm, 19/10/18, costa rica, fborbtm, 87
    36, mvsofmv, 20/10/18, nicaragua, mvsofmv, 77
    37, rtdgod, 21/10/18, españa, rtdgod, 90
    38, odmbt, 22/10/18, brasil, odmbt, 73
    39, odmbt, 23/10/18, brasil, odmbt, 84
    40, odmbt, 24/10/18, brasil, odmbt, 77
    41, odmbt, 25/10/18, brasil, odmbt, 86
    42, odmbt, 26/10/18, brasil, odmbt, 89
    43, odmbt, 27/10/18, brasil, odmbt, 77
    44, odmbt, 28/10/18, brasil, odmbt, 79
    45, odmbt, 29/10/18, brasil, odmbt, 84
    46, odmbt, 30/10/18, brasil, odmbt, 75
    47, odmbt, 31/10/18, brasil, odmbt, 74
    48, ssdofm, 01/11/18, argentina, ssdofm, 84
    49, sfsasd, 02/11/18, panama, sfsasd, 83
    50, sfsasd, 03/11/18, panama, sfsasd, 74
    51, sfsasd, 04/11/18, panama, sfsasd, 79
    52, sfsasd, 05/11/18, panama, sfsasd, 89
    53, sfsasd, 06/11/18, panama, sfsasd, 79
    54, sfsasd, 07/11/18, panama, sfsasd, 85
    55, sfsasd, 08/11/18, panama, sfsasd, 86
    56, sfsasd, 09/11/18, panama, sfsasd, 84
    57, sfsasd, 10/11/18, panama, sfsasd, 90
    58, sfsasd, 11/11/18, panama, sfsasd, 85
    59, sfsasd, 12/11/18, panama, sfsasd, 83
    60, sfsasd, 13/11/18, panama, sfsasd, 88
    61, sfsasd, 14/11/18, panama, sfsasd, 90
    62, sfsasd, 15/11/18, panama, sfsasd, 87
    63, sfsasd, 16/11/18, panama, sfsasd, 83
    64, sfsasd, 17/11/18, panama, sfsasd, 83
    65, casdfvwr, 18/11/18, us, casdfvwr, 90
    66, casdfvwr, 19/11/18, us, casdfvwr, 83
    67, qwedca, 20/11/18, colombia, qwedca, 77
    68, qwedca, 21/11/18, colombia, qwedca, 88
    69, qwedca, 22/11/18, colombia, qwedca, 80
    70, qwedca, 23/11/18, colombia, qwedca, 79
    71, advmdfo, 24/11/18, costa rica, advmdfo, 79
    72, advmdfo, 25/11/18, costa rica, advmdfo, 85
    73, adwore, 26/11/18, nicaragua, adwore, 89
    74, adwore, 27/11/18, nicaragua, adwore, 81
    75, aspvwro, 28/11/18, españa, aspvwro, 89
    76, asdvmwo, 29/11/18, brasil, asdvmwo, 73
    77, oyutrrt, 30/11/18, argentina, oyutrrt, 76
    78, oyutrrt, 01/12/18, argentina, oyutrrt, 85
    79, oyutrrt, 02/12/18, argentina, oyutrrt, 89
    80, evoirtm, 03/12/18, panama, evoirtm, 80
    81, ofgmrbt, 04/12/18, us, ofgmrbt, 75
    82, rbofgk, 05/12/18, colombia, rbofgk, 76
    83, fborbtm, 06/12/18, costa rica, fborbtm, 82
    84, mvsofmv, 07/12/18, nicaragua, mvsofmv, 84
    85, rtdgod, 08/12/18, españa, rtdgod, 89
    86, odmbt, 09/12/18, brasil, odmbt, 88
    87, odmbt, 10/12/18, brasil, odmbt, 76
    88, odmbt, 11/12/18, brasil, odmbt, 83
    89, odmbt, 12/12/18, brasil, odmbt, 79
    90, odmbt, 13/12/18, brasil, odmbt, 89
    91, odmbt, 14/12/18, brasil, odmbt, 80
    92, odmbt, 15/12/18, brasil, odmbt, 90
    93, odmbt, 16/12/18, brasil, odmbt, 86
    94, odmbt, 17/12/18, brasil, odmbt, 76
    95, odmbt, 18/12/18, brasil, odmbt, 76
    96, ssdofm, 19/12/18, argentina, ssdofm, 85
];



TablaMinMax:
LOAD
min(fecha) as DateMin,
max(fecha) as DateMax
Resident Data
;

LET vMin=num(Peek('DateMin',0,'TablaMinMax'));
LET vMax=num(Peek('DateMax',0,'TablaMinMax'));
LET vTope= 'Max(Total fecha)';

DROP Table TablaMinMax;

MasterCalendar:
LOAD
Date(IterNo()+$(vMin)-1)   as fecha,
month(Date(IterNo()+$(vMin)-1)) as Mes,
year(Date(IterNo()+$(vMin)-1)) as Año,
MonthName(Date(IterNo()+$(vMin)-1)) as MesAño,
IterNo()+$(vMin)-1 as NumFecha
AutoGenerate 1 While IterNo()+$(vMin)-1<=$(vMax);

Cualquier duda, a la orden.

Anonymous
Not applicable
Author

Muchas gracias! Lo probé y si bien no hace exactamente lo que quiero puede servirme.

Y abusando de tu amabilidad, como sería si en vez de querer de forma ramdomica quisiera que me muestre el 10% de trámites de cada emisor? O sea sin un emisor tiene 20 trámites que me muestre 2, si tiene 50 que muestre 5, pero estos 7 trámites me los muestre en un excel. Se entiende?

Gracias desde ya