activeLearn alJoin

Anexión Eficiente de Lotes de Anotaciones a un Gran Volumen de Datos

Scénario de test & Cas d'usage

Contexto empresarial

En un proyecto de etiquetado de imágenes a gran escala, los datos se etiquetan en lotes. En lugar de realizar una unión costosa basada en claves cada vez que llega un nuevo lote, se necesita un método eficiente para simplemente anexar los nuevos datos etiquetados (que ya contienen las características originales) a la tabla principal de datos ya etiquetados.
Sobre el conjunto : activeLearn

Aprendizaje activo para optimizar el etiquetado de datos.

Descubrir todas las acciones de activeLearn
Preparación de datos

Se crea una tabla 'DATOS_ETIQUETADOS_MAIN' con un millón de observaciones ya procesadas. Luego, se crea una tabla 'NUEVO_LOTE_ETIQUETADO' con 10,000 nuevas observaciones. Ambas tablas tienen la misma estructura.

¡Copiado!
1DATA casuser.DATOS_ETIQUETADOS_MAIN;
2 DO i = 1 to 1000000;
3 Feature1 = rand('UNIFORM');
4 Feature2 = rand('NORMAL');
5 Label = rand('BERNOULLI', 0.5);
6 OUTPUT;
7 END;
8RUN;
9 
10DATA casuser.NUEVO_LOTE_ETIQUETADO;
11 DO i = 1 to 10000;
12 Feature1 = rand('UNIFORM');
13 Feature2 = rand('NORMAL');
14 Label = rand('BERNOULLI', 0.6);
15 OUTPUT;
16 END;
17RUN;

Étapes de réalisation

1
Cargar la tabla principal de gran volumen y el nuevo lote a CAS.
¡Copiado!
1PROC CASUTIL;
2 load DATA=casuser.DATOS_ETIQUETADOS_MAIN outcaslib='casuser' casout='DATOS_ETIQUETADOS_MAIN' replace;
3 load DATA=casuser.NUEVO_LOTE_ETIQUETADO outcaslib='casuser' casout='NUEVO_LOTE_ETIQUETADO' replace;
4RUN;
5QUIT;
2
Utilizar el 'joinType' APPEND para anexar eficientemente el nuevo lote a la tabla principal. No se especifica un 'id' ya que es una operación de concatenación.
¡Copiado!
1PROC CAS;
2 activeLearn.alJoin /
3 TABLE={name='DATOS_ETIQUETADOS_MAIN'},
4 annotatedTable={name='NUEVO_LOTE_ETIQUETADO'},
5 joinType='APPEND',
6 casOut={name='DATOS_ETIQUETADOS_ACUMULADOS', replace=true};
7RUN;
8QUIT;
3
Verificar el número de filas en la tabla resultante para confirmar que la anexión fue exitosa.
¡Copiado!
1PROC CAS;
2 TABLE.numRows RESULT=r / TABLE='DATOS_ETIQUETADOS_ACUMULADOS';
3 PRINT r;
4RUN;
5QUIT;

Resultado esperado


La acción debe completarse de manera eficiente. La tabla final 'DATOS_ETIQUETADOS_ACUMULADOS' debe contener exactamente 1,010,000 filas (1,000,000 de la tabla original + 10,000 del nuevo lote). Esto valida que 'APPEND' funciona como una operación de concatenación de alto rendimiento, ideal para este caso de uso de lotes.