Scénario de test & Cas d'usage
Ejecución de funciones SAS FCMP en el entorno CAS.
Descubrir todas las acciones de fcmpactCreación de una tabla de lecturas de sensores con valores nulos para simular datos faltantes del mundo real.
| 1 | DATA mycas.lecturas_sensores; |
| 2 | INPUT id_maquina $ temperatura vibracion presion; |
| 3 | DATALINES; |
| 4 | MACH01 85.5 0.62 300 |
| 5 | MACH02 92.1 . 310 |
| 6 | MACH03 75.0 0.95 . |
| 7 | MACH04 . 0.55 295 |
| 8 | MACH05 105.3 1.25 330 |
| 9 | ; |
| 10 | RUN; |
| 1 | PROC CAS; |
| 2 | fcmpact.addRoutines |
| 3 | routineCode='function anomalia_temp(temp) $; |
| 4 | length resultado $ 8; |
| 5 | if missing(temp) then resultado = "N/A"; |
| 6 | else if temp > 100 then resultado = "ALERTA"; |
| 7 | else resultado = "NORMAL"; |
| 8 | return(resultado); |
| 9 | endsub;' |
| 10 | package='prediccion_mant' |
| 11 | funcTable={name='modelos_predictivos', caslib='mycas', replace=true}; |
| 12 | RUN; |
| 13 | QUIT; |
| 1 | PROC CAS; |
| 2 | fcmpact.addRoutines |
| 3 | routineCode='function anomalia_vib(vib) $; |
| 4 | length resultado $ 8; |
| 5 | if missing(vib) then resultado = "N/A"; |
| 6 | else if vib > 1.0 then resultado = "ALERTA"; |
| 7 | else resultado = "NORMAL"; |
| 8 | return(resultado); |
| 9 | endsub;' |
| 10 | package='prediccion_mant' |
| 11 | funcTable={name='modelos_predictivos', caslib='mycas'} |
| 12 | appendTable=TRUE; |
| 13 | RUN; |
| 14 | QUIT; |
| 1 | PROC CAS; |
| 2 | datastep.runCode / |
| 3 | code='data mycas.informe_estado; |
| 4 | set mycas.lecturas_sensores; |
| 5 | alerta_temperatura = anomalia_temp(temperatura); |
| 6 | alerta_vibracion = anomalia_vib(vibracion); |
| 7 | run;'; |
| 8 | RUN; |
| 9 | QUIT; |
| 1 | PROC CAS; |
| 2 | TABLE.fetch / TABLE='informe_estado'; |
| 3 | RUN; |
| 4 | QUIT; |
La tabla 'informe_estado' debe contener dos nuevas columnas: 'alerta_temperatura' y 'alerta_vibracion'. Los resultados deben mostrar que ambas funciones (la original y la añadida) se ejecutaron con éxito. Para las filas con datos faltantes (e.g., MACH02 para vibración, MACH04 para temperatura), el valor correspondiente en la columna de alerta debe ser 'N/A', demostrando que la lógica de manejo de nulos funcionó y que la opción 'appendTable' integró correctamente la segunda función sin eliminar la primera.