El script crea un conjunto de datos que contiene una serie de valores numéricos, incluyendo valores perdidos especiales (._, .a, .b, etc.). Utiliza la macro mp_jsonout para exportar estos datos a JSON. El archivo resultante se vuelve a leer y se convierte (tratando los valores especiales como texto en JSON) para verificar que los datos reconstruidos corresponden exactamente a los datos originales a través de PROC COMPARE.
Análisis de datos
Type : CREATION_INTERNE
La tabla 'demo' se genera localmente a través de un paso de datos iterativo.
1 Bloque de código
DATA STEP Data
Explicación : Definición de un archivo temporal y creación de la tabla de datos 'demo' que contiene varios valores numéricos y valores perdidos especiales para la prueba.
¡Copiado!
filename webref temp;
data demo;
do x=._,.,.a,.b,.c,.d,.e,-99, 0, 1,2, 3.333333;
output;
end;
run;
1
filename webref temp;
2
3
DATA demo;
4
DO x=._,.,.a,.b,.c,.d,.e,-99, 0, 1,2, 3.333333;
5
OUTPUT;
6
END;
7
RUN;
2 Bloque de código
MACRO CALL
Explicación : Llamada a la macro mp_jsonout para exportar la tabla 'demo' al archivo temporal 'webref', con la opción missing=STRING para manejar formatos específicos.
Explicación : Paso de depuración que muestra el contenido bruto del archivo JSON generado en el log de SAS.
¡Copiado!
data _null_;
infile webref;
input;
putlog _infile_;
run;
1
DATA _null_;
2
INFILE webref;
3
INPUT;
4
putlog _infile_;
5
RUN;
4 Bloque de código
DATA STEP Data
Explicación : Lectura del archivo JSON a través del motor LIBNAME JSON y reconstrucción de la tabla 'test'. Incluye una lógica para reconvertir las cadenas de caracteres (que representan los valores perdidos especiales) a formato numérico SAS.
¡Copiado!
libname web JSON fileref=webref;
data work.test(keep=x);
set web.demo(rename=(x=y));
if y ='_' then x=._;
else if anyalpha(y) then x=input(cats(".",y),best.);
else x=input(y,best.);
put (_all_)(=);
run;
1
LIBNAME web JSON fileref=webref;
2
3
DATA work.test(keep=x);
4
SET web.demo(rename=(x=y));
5
IF y ='_'THEN x=._;
6
ELSEIF anyalpha(y) THEN x=INPUT(cats(".",y),best.);
7
ELSE x=INPUT(y,best.);
8
put (_all_)(=);
9
RUN;
5 Bloque de código
MACRO CALL
Explicación : Verificación de que no se ha producido ningún error del sistema (SYSCC) hasta el momento.
¡Copiado!
%mp_assert(
iftrue=(&syscc=0),
desc=Checking for error condition with special missing export,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Checking for error condition with special missing export,
4
outds=work.test_results
5
)
6 Bloque de código
PROC COMPARE
Explicación : Comparación estructural y de contenido entre la tabla original 'demo' y la tabla resultante del JSON 'test'.
Explicación : Aserción final que verifica que PROC COMPARE no ha detectado ninguna diferencia (SYSINFO=0).
¡Copiado!
%mp_assert(
iftrue=(&sysinfo=0),
desc=Returned json is identical to input table for all special missings,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&sysinfo=0),
3
desc=Returned json is identical to INPUTTABLE for all special missings,
4
outds=work.test_results
5
)
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.