Scénario de test & Cas d'usage
Aprendizaje activo para optimizar el etiquetado de datos.
Descubrir todas las acciones de activeLearnSe 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.
| 1 | DATA 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; |
| 8 | RUN; |
| 9 | |
| 10 | DATA 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; |
| 17 | RUN; |
| 1 | PROC 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; |
| 4 | RUN; |
| 5 | QUIT; |
| 1 | PROC 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}; |
| 7 | RUN; |
| 8 | QUIT; |
| 1 | PROC CAS; |
| 2 | TABLE.numRows RESULT=r / TABLE='DATOS_ETIQUETADOS_ACUMULADOS'; |
| 3 | PRINT r; |
| 4 | RUN; |
| 5 | QUIT; |
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.