20 de enero de 2014

Selecionar muestra aleatoria

Diferentes técnicas para elegir una muestra de datos de una tabla

1.El siguiente Script asigna a cada registro una probabilidad de 50% de ser seleccionado (cargado), usando la función SAMPLE:
Sample 0.5
LOAD * INLINE [
    Sucursal, Venta
    Norte,    23
    Sur,      54
    Norte,    53
    Oeste,    90
    Sur,      21
    Oeste,    39
    Sur,      84
    Norte,    36
    Este,     33

    Sur,      93]

Para usar Sample en un QVD debe usarse Where, quedando:
Sample 0.5
LOAD SucursalVenta
FROM Datos.qvd
Where 1=1; 

NOTA: La probabilidad con Sample puede ser de 0 a 1


2. Otra técnica para seleccionar una muestra aleatoria es usar la funcion RAND() quedando:
LOAD * WHERE Rand()<0.5;
LOAD * INLINE [
    Sucursal, Venta
    Norte,    23
    Sur,      54
    Norte,    53
    Oeste,    90
    Sur,      21
    Oeste,    39
    Sur,      84
    Norte,    36
    Este,     33
    Sur,      93]
;

3. Para cargar los 100 primeros registros (No Aleatorio) de una tabla, puede usarse:
First 100 LOAD From Datos.qvd


4.Para cargar una cantidad especifica de registros aleatorios, puede crearse un campo aleatorio y despues ordenar la tabla con este campo. Luego que el orden sea aleatorio se eligen, por ejemplo, los primeros 100 registros, y será una elección aleatorios de 100 registros:


Base_Cliente:
LOAD
     
RecNo()     as IdCliente,
     
rand()      as Aleatorio
AutoGenerate
 10000;

Clientes_Aleatorios:
First
100
Noconcatenate

LOAD
 * Resident Base_Cliente
Order
 By Aleatorio;
DROP
 Table Base_Cliente;



5. Para cargar los 100 primeros registros (No Aleatorios) de todas las tablas, ir al Editor Script>Depurar y en Carga Limitada seleccionar 100, luego elegir Ejecutar.

Referencia: https://gist.github.com/ralfbecher/5314810

No hay comentarios: