La acción `addRoutines` del conjunto de acciones `fcmpact` permite compilar y añadir funciones y subrutinas escritas en el lenguaje FCMP (PROC FCMP) directamente en una sesión de CAS. Estas rutinas se almacenan en una tabla de CAS, lo que las hace disponibles para ser utilizadas en otras acciones de CAS o en pasos DATA que se ejecutan en el servidor CAS. Es una herramienta fundamental para extender la funcionalidad de SAS Viya con lógica personalizada.
| Parámetro | Descripción |
|---|---|
| appendTable | Cuando se establece en TRUE, especifica que las nuevas funciones se añadan a la tabla FCMP existente. Si es FALSE, la tabla se sobrescribe. |
| funcTable | Especifica la tabla de salida donde se almacenarán las funciones y subrutinas FCMP compiladas. |
| library | Especifica una biblioteca FCMP existente para cargar, permitiendo el acceso a sus funciones. |
| package | Define el nombre del paquete FCMP utilizado para agrupar y organizar las funciones y subrutinas. |
| routineCode | Contiene el código fuente de las funciones o subrutinas FCMP que se van a compilar y guardar en la tabla. Es el parámetro principal donde se escribe la lógica personalizada. |
| saveTable | Cuando se establece en TRUE, especifica que la tabla FCMP debe ser guardada como un fichero físico en la caslib. |
Este código crea una tabla simple en CAS llamada 'ventas_productos' que contiene información sobre productos y sus ventas. Esta tabla se utilizará para demostrar cómo aplicar una función personalizada creada con la acción `addRoutines`.
| 1 | DATA mycas.ventas_productos; |
| 2 | LENGTH producto $ 20; |
| 3 | INPUT producto $ precio cantidad; |
| 4 | DATALINES; |
| 5 | Manzanas 1.20 100 |
| 6 | Naranjas 0.90 150 |
| 7 | Platanos 0.75 200 |
| 8 | Uvas 2.50 80 |
| 9 | ; |
| 10 | RUN; |
Este ejemplo define una función simple llamada `CALCULAR_IVA` que calcula el impuesto sobre el valor añadido (IVA) para un precio dado. La función se guarda en un paquete llamado `mi_paquete` dentro de la tabla `mis_funciones` en la caslib `mycas`.
| 1 | PROC CAS; |
| 2 | fcmpact.addRoutines |
| 3 | routineCode='function calcular_iva(precio) return(precio * 0.21); endsub;' |
| 4 | package='mi_paquete' |
| 5 | funcTable={name='mis_funciones', caslib='mycas', replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
Este ejemplo define dos funciones. La primera, `INGRESOS_TOTALES`, calcula los ingresos multiplicando el precio por la cantidad. La segunda, `APLICAR_DESCUENTO`, aplica un descuento del 10% si los ingresos superan un umbral de 100. Ambas funciones se añaden a la tabla `mis_funciones` y luego se utilizan en un paso DATA para crear una nueva tabla con los cálculos.
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | |
| 4 | /* 1. Definir y añadir las funciones a una tabla CAS */ |
| 5 | fcmpact.addRoutines |
| 6 | routineCode={ |
| 7 | 'function ingresos_totales(precio, cantidad) return(precio * cantidad); endsub;', |
| 8 | 'function aplicar_descuento(ingresos) if ingresos > 100 then return(ingresos * 0.90); else return(ingresos); endsub;' |
| 9 | } |
| 10 | package='calculos_ventas' |
| 11 | funcTable={name='mis_funciones', caslib='mycas', replace=true}; |
| 12 | |
| 13 | /* 2. Utilizar las funciones en un paso DATA ejecutado en CAS */ |
| 14 | datastep.runCode |
| 15 | code='data mycas.ventas_calculadas; |
| 16 | set mycas.ventas_productos; |
| 17 | ingresos = ingresos_totales(precio, cantidad); |
| 18 | ingresos_con_descuento = aplicar_descuento(ingresos); |
| 19 | run;'; |
| 20 | |
| 21 | /* 3. Mostrar los resultados */ |
| 22 | TABLE.fetch / TABLE='ventas_calculadas'; |
| 23 | RUN; |
| 24 | QUIT; |
Una empresa minorista busca mejorar la retención de clientes mediante la creación de un programa de fidelización por niveles. El objetivo es clasificar a los clientes en 'Oro', ...
Una entidad financiera necesita evaluar el riesgo de miles de solicitudes de préstamos diariamente. El modelo de scoring es una función compleja y propietaria. Para optimizar el...
Una empresa industrial despliega modelos de mantenimiento predictivo como funciones FCMP. Diferentes equipos de ciencia de datos desarrollan funciones para detectar anomalías en...