Publicado el :
Prueba / Macro CREATION_INTERNE

Prueba de la macro mp_jsonout con valores perdidos especiales

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1filename webref temp;
2 
3DATA demo;
4 DO x=._,.,.a,.b,.c,.d,.e,-99, 0, 1,2, 3.333333;
5 OUTPUT;
6 END;
7RUN;
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.
¡Copiado!
1%mp_jsonout(OPEN,jref=webref)
2%mp_jsonout(OBJ,demo,jref=webref,fmt=N,missing=STRING)
3%mp_jsonout(CLOSE,jref=webref)
3 Bloque de código
DATA STEP
Explicación :
Paso de depuración que muestra el contenido bruto del archivo JSON generado en el log de SAS.
¡Copiado!
1DATA _null_;
2 INFILE webref;
3 INPUT;
4 putlog _infile_;
5RUN;
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!
1LIBNAME web JSON fileref=webref;
2 
3DATA work.test(keep=x);
4 SET web.demo(rename=(x=y));
5 IF y ='_' THEN x=._;
6 ELSE IF anyalpha(y) THEN x=INPUT(cats(".",y),best.);
7 ELSE x=INPUT(y,best.);
8 put (_all_)(=);
9RUN;
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!
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'.
¡Copiado!
1 
2PROC COMPARE base=work.demo compare=work.test;
3QUIT;
4 
7 Bloque de código
MACRO CALL
Explicación :
Aserción final que verifica que PROC COMPARE no ha detectado ninguna diferencia (SYSINFO=0).
¡Copiado!
1%mp_assert(
2 iftrue=(&sysinfo=0),
3 desc=Returned json is identical to INPUT TABLE 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.