builtins actionSetToTable

Procesamiento por Lotes de Múltiples Conjuntos de Acciones Generados Dinámicamente

Scénario de test & Cas d'usage

Contexto empresarial

En un entorno de MLOps, un sistema automatizado genera docenas de conjuntos de acciones para diferentes pipelines de entrenamiento de modelos. Se necesita un proceso robusto para capturar eficientemente las definiciones de todos estos conjuntos de acciones y consolidarlas en una única tabla de seguimiento para el versionado y la gestión de modelos.
Sobre el conjunto : builtins

Comandos fundamentales del sistema del servidor CAS.

Descubrir todas las acciones de builtins
Preparación de datos

Simular la generación masiva de conjuntos de acciones mediante una macro SAS. Cada conjunto de acciones representa una versión de un pipeline de modelo.

¡Copiado!
1DATA _null_;
2 call execute('proc cas;');
3 DO i = 1 to 50;
4 action_set_name = cats('pipeline_v', i);
5 action_name = cats('train_model_v', i);
6 call execute(cats('builtins.defineActionSet / actionSet="', action_set_name, '", actions=[{name="', action_name, '", parms={}}];'));
7 END;
8 call execute('run;');
9RUN;

Étapes de réalisation

1
Crear una tabla maestra vacía que almacenará las definiciones de todos los conjuntos de acciones.
¡Copiado!
1PROC CAS;
2 DATA casuser.master_pipeline_definitions;
3 LENGTH actionset $ 32 ACTION $ 32 parms $ 200;
4 stop;
5 RUN;
6 TABLE.promote / name='master_pipeline_definitions', caslib='casuser';
2
Iterar sobre los 50 conjuntos de acciones, convertir cada uno a una tabla temporal y adjuntar su contenido a la tabla maestra.
¡Copiado!
1DATA _null_;
2 call execute('proc cas;');
3 DO i = 1 to 50;
4 action_set_name = cats('pipeline_v', i);
5 temp_table_name = cats('temp_def_', i);
6 call execute(cats('builtins.actionSetToTable / actionSet="', action_set_name, '", casOut={name="', temp_table_name, '", caslib="CASUSER"};'));
7 call execute(cats('table.append / source={name="', temp_table_name, '"}, target={name="master_pipeline_definitions"};'));
8 call execute(cats('table.dropTable / name="', temp_table_name, '", quiet=true;'));
9 END;
10 call execute('run;');
11RUN;
3
Contar las filas en la tabla maestra para verificar que todos los conjuntos de acciones fueron procesados.
¡Copiado!
1 
2PROC CAS;
3TABLE.numRows / TABLE={name='master_pipeline_definitions'};
4RUN;
5 

Resultado esperado


La tabla 'master_pipeline_definitions' debe contener 50 filas, una por cada conjunto de acciones generado. El log no debe mostrar errores, demostrando que la acción `actionSetToTable` funciona de manera fiable en un bucle de alto volumen y que los resultados pueden ser consolidados eficientemente.