Dieses Programm führt eine Reihe von Unit-Tests durch, um die Robustheit des Makros mp_storediffs zu überprüfen. Es generiert Testdaten, die von sashelp.class abgeleitet sind, wendet kontrollierte Änderungen an und verwendet Assertionsmakros (mp_assert, mp_assertdsobs, mp_assertcolvals), um zu validieren, dass die gemeldeten Unterschiede exakt sind. Die Szenarien umfassen gemischte Änderungen, keine Änderungen und nur Löschungen.
Datenanalyse
Type : MIXTE
Die Daten werden lokal (Bibliothek WORK) aus der Systemtabelle sashelp.class über DATA-Schritte generiert.
1 Codeblock
DATA STEP Data
Erklärung : Erstellung der Testtabellen für das erste Szenario: eine Originaltabelle und Tabellen, die Löschungen, Änderungen und Hinzufügungen simulieren.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung : Aufruf des Makros mp_storediffs, um sashelp.class mit work.orig zu vergleichen und die Unterschiede in work.final zu generieren.
Erklärung : Erstellung einer Referenztabelle zur Validierung, dass die Spalte 'tgtvar_type' der finalen Tabelle über mp_assertcolvals nur die erwarteten Werte enthält.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Testszenario 'Keine Änderung': Überprüft, ob der Vergleich identischer Tabellen eine leere Differenztabelle (0 Beobachtungen) erzeugt.
Kopiert!
/* 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 Codeblock
DATA STEP Data
Erklärung : Testszenario 'Nur Löschungen': Simuliert das Löschen von Zeilen und überprüft, ob die Anzahl der erkannten Unterschiede den Erwartungen entspricht (70 Datensätze).
Kopiert!
/* 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
)
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.