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!
proc sql;
create table work.example as
select * from sashelp.classfit;
alter table work.example
add constraint pk primary key(name);
%mp_sortinplace(work.example)
1
PROC SQL;
2
create TABLE work.example as
3
select * from sashelp.classfit;
4
alter 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.
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!
%let test1=0;
data _null_;
set work.example;
call symputx('test1',name);
stop;
run;
%mp_assert(
iftrue=(
%str(&test1)=%str(Alfred)
),
desc=Check if sort was appplied,
outds=work.test_results
)
1
%let test1=0;
2
DATA _null_;
3
SET work.example;
4
call symputx('test1',name);
5
stop;
6
RUN;
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!
proc sql;
create table work.example2 as
select * from sashelp.classfit;
%mp_sortinplace(work.example2)
1
PROC SQL;
2
create 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!
%mp_assert(
iftrue=(
%str(&syscc)=%str(0)
),
desc=Ensure no errors when no key exists,
outds=work.test_results
)
%let test2=0;
data _null_;
set work.example2;
call symputx('test2',name);
stop;
run;
%mp_assert(
iftrue=(
%str(&test2)=%str(Alfred)
),
desc=Check if sort was appplied when no index exists,
outds=work.test_results
)
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;
10
DATA _null_;
11
SET work.example2;
12
call symputx('test2',name);
13
stop;
14
RUN;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.