fcmpact addRoutines

Mantenimiento Predictivo: Agregación de Funciones y Gestión de Nulos

Scénario de test & Cas d'usage

Contexto empresarial

Una empresa industrial despliega modelos de mantenimiento predictivo como funciones FCMP. Diferentes equipos de ciencia de datos desarrollan funciones para detectar anomalías en distintos sensores (temperatura, vibración). Estas funciones deben agregarse a un repositorio central sin sobrescribirse. Además, las funciones deben ser robustas y capaces de manejar datos de sensores que a veces pueden ser nulos o faltantes.
Sobre el conjunto : fcmpact

Ejecución de funciones SAS FCMP en el entorno CAS.

Descubrir todas las acciones de fcmpact
Preparación de datos

Creación de una tabla de lecturas de sensores con valores nulos para simular datos faltantes del mundo real.

¡Copiado!
1DATA mycas.lecturas_sensores;
2 INPUT id_maquina $ temperatura vibracion presion;
3 DATALINES;
4MACH01 85.5 0.62 300
5MACH02 92.1 . 310
6MACH03 75.0 0.95 .
7MACH04 . 0.55 295
8MACH05 105.3 1.25 330
9;
10RUN;

Étapes de réalisation

1
El equipo de 'Temperatura' despliega su función de detección de anomalías. La función debe manejar valores nulos.
¡Copiado!
1PROC 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};
12RUN;
13QUIT;
2
El equipo de 'Vibración' despliega su función, añadiéndola a la tabla existente usando 'appendTable=TRUE'.
¡Copiado!
1PROC 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;
13RUN;
14QUIT;
3
Aplicar ambas funciones en un único paso DATA para generar un informe de estado de las máquinas.
¡Copiado!
1PROC 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;';
8RUN;
9QUIT;
4
Verificar el informe final, asegurándose de que ambas funciones se aplicaron y los nulos se manejaron correctamente.
¡Copiado!
1PROC CAS;
2 TABLE.fetch / TABLE='informe_estado';
3RUN;
4QUIT;

Resultado esperado


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.