Este programa ejecuta una serie de pruebas unitarias para verificar la robustez de la macro mp_storediffs. Genera datos de prueba derivados de sashelp.class, aplica modificaciones controladas y utiliza macros de aserción (mp_assert, mp_assertdsobs, mp_assertcolvals) para validar que las diferencias reportadas son exactas. Los escenarios incluyen cambios mixtos, ausencia de cambios y solo eliminaciones.
Análisis de datos
Type : MIXTE
Los datos se generan localmente (biblioteca WORK) a partir de la tabla del sistema sashelp.class a través de pasos DATA.
1 Bloque de código
DATA STEP Data
Explicación : Creación de las tablas de prueba para el primer escenario: una tabla original y tablas que simulan eliminaciones, modificaciones y adiciones.
¡Copiado!
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
if _n_=1 then do;
output work.orig work.deleted;
end;
else if _n_=2 then do;
output work.orig;
age=99;
output work.changed;
end;
else do;
name='Newbie';
output work.appended;
stop;
end;
run;
1
DATA work.orig work.deleted work.changed work.appended;
2
SET sashelp.class;
3
IF _n_=1THENDO;
4
OUTPUT work.orig work.deleted;
5
END;
6
ELSEIF _n_=2THENDO;
7
OUTPUT work.orig;
8
age=99;
9
OUTPUT work.changed;
10
END;
11
ELSEDO;
12
name='Newbie';
13
OUTPUT work.appended;
14
stop;
15
END;
16
RUN;
2 Bloque de código
MACRO CALL
Explicación : Llamada a la macro mp_storediffs para comparar sashelp.class con work.orig y generar las diferencias en work.final.
Explicación : Creación de una tabla de referencia para validar que la columna 'tgtvar_type' de la tabla final contiene únicamente los valores esperados a través de mp_assertcolvals.
¡Copiado!
data work.check;
length val $10;
do val='C','N';
output;
end;
run;
%mp_assertcolvals(work.final.tgtvar_type,
checkvals=work.check.val,
desc=All values have a match,
test=ALLVALS
)
1
DATA work.check;
2
LENGTH val $10;
3
DO val='C','N';
4
OUTPUT;
5
END;
6
RUN;
7
%mp_assertcolvals(work.final.tgtvar_type,
8
checkvals=work.check.val,
9
desc=All values have a match,
10
test=ALLVALS
11
)
5 Bloque de código
DATA STEP Data
Explicación : Escenario de prueba 'Sin cambios': verifica que la comparación de tablas idénticas produce una tabla de diferencias vacía (0 observaciones).
¡Copiado!
/* Test for when there are no actual changes */
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
output work.orig;
run;
%mp_storediffs(sashelp.class,work.orig,NAME
,delds=work.deleted
,modds=work.changed
,appds=work.appended
,outds=work.final2
,mdebug=1
)
%mp_assertdsobs(work.final2,
desc=No changes produces 0 records,
test=EQUALS 0,
outds=work.test_results
)
1
/* Test for when there are no actual changes */
2
DATA work.orig work.deleted work.changed work.appended;
3
SET sashelp.class;
4
OUTPUT work.orig;
5
RUN;
6
%mp_storediffs(sashelp.class,work.orig,NAME
7
,delds=work.deleted
8
,modds=work.changed
9
,appds=work.appended
10
,outds=work.final2
11
,mdebug=1
12
)
13
%mp_assertdsobs(work.final2,
14
desc=No changes produces 0 records,
15
test=EQUALS 0,
16
outds=work.test_results
17
)
6 Bloque de código
DATA STEP Data
Explicación : Escenario de prueba 'Solo eliminaciones': simula la eliminación de filas y verifica que el número de diferencias detectadas corresponde a las expectativas (70 registros).
¡Copiado!
/* Test for deletes only */
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
output work.orig;
if _n_>5 then output work.deleted;
run;
%mp_storediffs(sashelp.class,work.orig,NAME
,delds=work.deleted
,modds=work.changed
,appds=work.appended
,outds=work.final3
,mdebug=1
)
%mp_assertdsobs(work.final3,
desc=Delete has 70 records,
test=EQUALS 70,
outds=work.test_results
)
1
/* Test for deletes only */
2
DATA work.orig work.deleted work.changed work.appended;
3
SET sashelp.class;
4
OUTPUT work.orig;
5
IF _n_>5THENOUTPUT work.deleted;
6
RUN;
7
8
%mp_storediffs(sashelp.class,work.orig,NAME
9
,delds=work.deleted
10
,modds=work.changed
11
,appds=work.appended
12
,outds=work.final3
13
,mdebug=1
14
)
15
%mp_assertdsobs(work.final3,
16
desc=Delete has 70 records,
17
test=EQUALS 70,
18
outds=work.test_results
19
)
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.