fcmpact

addRoutines

Descripción

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.

fcmpact.addRoutines <result=results> <status=rc> / appendTable=TRUE | FALSE, funcTable={<casouttable>}, library="string", package="string", routineCode={"string-1" <, "string-2", ...>}, saveTable=TRUE | FALSE;
Parámetros
ParámetroDescripción
appendTableCuando se establece en TRUE, especifica que las nuevas funciones se añadan a la tabla FCMP existente. Si es FALSE, la tabla se sobrescribe.
funcTableEspecifica la tabla de salida donde se almacenarán las funciones y subrutinas FCMP compiladas.
libraryEspecifica una biblioteca FCMP existente para cargar, permitiendo el acceso a sus funciones.
packageDefine el nombre del paquete FCMP utilizado para agrupar y organizar las funciones y subrutinas.
routineCodeContiene 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.
saveTableCuando se establece en TRUE, especifica que la tabla FCMP debe ser guardada como un fichero físico en la caslib.
Creación de Datos de Ejemplo

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`.

¡Copiado!
1DATA mycas.ventas_productos;
2 LENGTH producto $ 20;
3 INPUT producto $ precio cantidad;
4 DATALINES;
5Manzanas 1.20 100
6Naranjas 0.90 150
7Platanos 0.75 200
8Uvas 2.50 80
9;
10RUN;

Ejemplos

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`.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC 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};
6RUN;
7QUIT;
Resultado :
La acción compila la función `calcular_iva` y la almacena en la tabla `mycas.mis_funciones`. No se produce una salida visible, pero la función está ahora disponible en la sesión de CAS para ser utilizada en otros pasos.

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC 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';
23RUN;
24QUIT;
Resultado :
La acción `table.fetch` mostrará la tabla `ventas_calculadas` con dos nuevas columnas: `ingresos`, que contiene el resultado de `precio * cantidad`, e `ingresos_con_descuento`, que muestra los ingresos con un 10% de descuento aplicado a los productos cuyos ingresos totales superan los 100 (Manzanas, Naranjas y Plátanos).

FAQ

¿Cuál es el propósito de la acción addRoutines?
¿Qué especifica el parámetro 'routineCode'?
¿Cómo se define la tabla de salida para las funciones FCMP?
¿Para qué sirve el parámetro 'package'?
¿Es posible añadir funciones a una tabla FCMP ya existente?
¿Cómo se puede cargar una biblioteca FCMP existente?
¿Qué hace el parámetro 'saveTable'?

Escenarios asociados

Caso de uso
Segmentación de Clientes para Campaña de Fidelización

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', ...

Caso de uso
Análisis de Riesgo Crediticio con Persistencia de Funciones

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...

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

Una empresa industrial despliega modelos de mantenimiento predictivo como funciones FCMP. Diferentes equipos de ciencia de datos desarrollan funciones para detectar anomalías en...