Veröffentlicht am :
Test / Makro INTERNE_ERSTELLUNG

Test des mp_jsonout-Makros mit speziellen fehlenden Werten

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript erstellt einen Datensatz mit einer Reihe von numerischen Werten, einschließlich spezieller fehlender Werte (._, .a, .b usw.). Es verwendet das mp_jsonout-Makro, um diese Daten in JSON zu exportieren. Die resultierende Datei wird dann neu eingelesen und konvertiert (wobei spezielle Werte als Text im JSON behandelt werden), um zu überprüfen, ob die rekonstruierten Daten über PROC COMPARE genau mit den Originaldaten übereinstimmen.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Tabelle 'demo' wird lokal über einen iterativen Data Step generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Definition einer temporären Datei und Erstellung der Datentabelle 'demo' mit verschiedenen numerischen Werten und speziellen fehlenden Werten für den Test.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung :
Aufruf des mp_jsonout-Makros zum Export der Tabelle 'demo' in die temporäre Datei 'webref' mit der Option missing=STRING zur Handhabung spezifischer Formate.
Kopiert!
1%mp_jsonout(OPEN,jref=webref)
2%mp_jsonout(OBJ,demo,jref=webref,fmt=N,missing=STRING)
3%mp_jsonout(CLOSE,jref=webref)
3 Codeblock
DATA STEP
Erklärung :
Debugging-Schritt, der den Rohinhalt der generierten JSON-Datei im SAS-Log anzeigt.
Kopiert!
1DATA _null_;
2 INFILE webref;
3 INPUT;
4 putlog _infile_;
5RUN;
4 Codeblock
DATA STEP Data
Erklärung :
Lesen der JSON-Datei über die LIBNAME JSON-Engine und Rekonstruktion der Tabelle 'test'. Enthält eine Logik zur Rückkonvertierung von Zeichenfolgen (die spezielle fehlende Werte darstellen) in das SAS-numerische Format.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung :
Überprüfung, dass bisher kein Systemfehler (SYSCC) aufgetreten ist.
Kopiert!
1%mp_assert(
2 iftrue=(&syscc=0),
3 desc=Checking for error condition with special missing export,
4 outds=work.test_results
5)
6 Codeblock
PROC COMPARE
Erklärung :
Struktureller und inhaltlicher Vergleich zwischen der Originaltabelle 'demo' und der aus JSON erstellten Tabelle 'test'.
Kopiert!
1 
2PROC COMPARE base=work.demo compare=work.test;
3QUIT;
4 
7 Codeblock
MACRO CALL
Erklärung :
Abschließende Assertion, die überprüft, ob PROC COMPARE keine Unterschiede (SYSINFO=0) erkannt hat.
Kopiert!
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)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.