Publicado el :
Prueba MIXTE

Prueba de la macro mp_sortinplace

Este código también está disponible en: Deutsch English Français
En espera de validación
El programa evalúa la funcionalidad de la macro `%mp_sortinplace` en dos escenarios. El primer escenario crea una tabla temporal `work.example` a partir de `sashelp.classfit`, añade una restricción de clave primaria y aplica `%mp_sortinplace`, luego verifica que las restricciones se recrean correctamente y que el ordenamiento es efectivo (primera observación 'Alfred'). El segundo escenario crea `work.example2` sin restricción de clave primaria, aplica `%mp_sortinplace`, y confirma que la operación se realiza sin errores y que el ordenamiento también se aplica correctamente.
Análisis de datos

Type : MIXTE


El script utiliza `sashelp.classfit` como fuente de datos inicial para crear tablas de trabajo temporales (`work.example`, `work.example2`). Los resultados de las pruebas y las restricciones extraídas se almacenan en otras tablas de trabajo (`work.testme`, `work.test_results`).

1 Bloque de código
PROC SQL / MACRO %mp_sortinplace Data
Explicación :
Este bloque inicializa el primer escenario de prueba. Crea una nueva tabla `work.example` copiando el contenido de `sashelp.classfit`. Luego se añade una restricción de clave primaria en la columna `name`. Finalmente, se llama a la macro `%mp_sortinplace` para ordenar esta tabla en su lugar.
¡Copiado!
1PROC SQL;
2create TABLE work.example as
3 select * from sashelp.classfit;
4alter TABLE work.example
5 add constraint pk primary key(name);
6%mp_sortinplace(work.example)
2 Bloque de código
MACRO %mp_getconstraints / %mp_assertdsobs Data
Explicación :
Este bloque verifica la gestión de restricciones. La macro `%mp_getconstraints` se utiliza para extraer la información de restricción de `work.example` y guardarla en `work.testme`. Luego, la macro `%mp_assertdsobs` afirma que hay exactamente una observación en `work.testme`, confirmando que la restricción de clave primaria ha sido detectada y procesada correctamente después del ordenamiento.
¡Copiado!
1%mp_getconstraints(lib=work,ds=example,outds=work.testme)
2 
3%mp_assertdsobs(work.testme,
4 desc=Test1 - check constraints recreated,
5 test=EQUALS 1,
6 outds=work.test_results
7)
3 Bloque de código
DATA STEP / MACRO %mp_assert
Explicación :
Este bloque valida el resultado del ordenamiento. Utiliza un `DATA _NULL_` para leer el primer valor de la columna `name` de la tabla ordenada `work.example` y lo almacena en la macro-variable `test1`. La macro `%mp_assert` se utiliza luego para verificar que `test1` sea 'Alfred', lo que confirma que la tabla ha sido ordenada alfabéticamente de forma ascendente por la columna `name`.
¡Copiado!
1%let test1=0;
2DATA _null_;
3 SET work.example;
4 call symputx('test1',name);
5 stop;
6RUN;
7%mp_assert(
8 iftrue=(
9 %str(&test1)=%str(Alfred)
10 ),
11 desc=Check IF sort was appplied,
12 outds=work.test_results
13)
4 Bloque de código
PROC SQL / MACRO %mp_sortinplace Data
Explicación :
Este bloque inicia el segundo escenario de prueba. Crea una nueva tabla `work.example2` a partir de `sashelp.classfit`, esta vez sin añadir restricciones de clave primaria. La macro `%mp_sortinplace` se llama en esta tabla para probar su comportamiento en ausencia de restricciones explícitas.
¡Copiado!
1PROC SQL;
2create TABLE work.example2 as
3 select * from sashelp.classfit;
4%mp_sortinplace(work.example2)
5 Bloque de código
MACRO %mp_assert / DATA STEP / MACRO %mp_assert
Explicación :
Este bloque contiene dos aserciones para la segunda prueba. La primera utiliza `%mp_assert` para verificar que la macro `%mp_sortinplace` se ejecutó con éxito (código de retorno del sistema `&syscc` igual a 0) incluso sin clave primaria. La segunda aserción, a través de un `DATA _NULL_` y `%mp_assert`, verifica de nuevo que el ordenamiento se aplicó correctamente confirmando que el primer valor de `name` en `work.example2` es 'Alfred'.
¡Copiado!
1%mp_assert(
2 iftrue=(
3 %str(&syscc)=%str(0)
4 ),
5 desc=Ensure no errors when no key exists,
6 outds=work.test_results
7)
8 
9%let test2=0;
10DATA _null_;
11 SET work.example2;
12 call symputx('test2',name);
13 stop;
14RUN;
15%mp_assert(
16 iftrue=(
17 %str(&test2)=%str(Alfred)
18 ),
19 desc=Check IF sort was appplied when no index exists,
20 outds=work.test_results
21)
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.