Veröffentlicht am :
Test GEMISCHT

Test des Makros mp_sortinplace

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Programm evaluiert die Funktionalität des Makros `%mp_sortinplace` in zwei Szenarien. Das erste Szenario erstellt eine temporäre Tabelle `work.example` aus `sashelp.classfit`, fügt eine Primärschlüssel-Constraint hinzu und wendet `%mp_sortinplace` an. Anschließend wird überprüft, ob die Constraints korrekt neu erstellt wurden und die Sortierung wirksam ist (erste Beobachtung 'Alfred'). Das zweite Szenario erstellt `work.example2` ohne Primärschlüssel-Constraint, wendet `%mp_sortinplace` an und bestätigt, dass der Vorgang fehlerfrei abläuft und die Sortierung ebenfalls korrekt angewendet wird.
Datenanalyse

Type : GEMISCHT


Das Skript verwendet `sashelp.classfit` als anfängliche Datenquelle, um temporäre Arbeitstabellen (`work.example`, `work.example2`) zu erstellen. Die Testergebnisse und die extrahierten Constraints werden in anderen Arbeitstabellen (`work.testme`, `work.test_results`) gespeichert.

1 Codeblock
PROC SQL / MACRO %mp_sortinplace Data
Erklärung :
Dieser Block initialisiert das erste Testszenario. Er erstellt eine neue Tabelle `work.example`, indem er den Inhalt von `sashelp.classfit` kopiert. Anschließend wird eine Primärschlüssel-Constraint zur Spalte `name` hinzugefügt. Schließlich wird das Makro `%mp_sortinplace` aufgerufen, um diese Tabelle an Ort und Stelle zu sortieren.
Kopiert!
1PROC SQL;
2create TABLE work.example as
3 select * from sashelp.classfit;
4alter TABLE work.example
5 add constraint pk primary key(name);
6%mp_sortinplace(work.example)
2 Codeblock
MACRO %mp_getconstraints / %mp_assertdsobs Data
Erklärung :
Dieser Block überprüft das Constraint-Management. Das Makro `%mp_getconstraints` wird verwendet, um Constraint-Informationen aus `work.example` zu extrahieren und in `work.testme` zu speichern. Anschließend bestätigt das Makro `%mp_assertdsobs`, dass genau eine Beobachtung in `work.testme` vorhanden ist, was bestätigt, dass die Primärschlüssel-Constraint nach der Sortierung korrekt erkannt und behandelt wurde.
Kopiert!
1%mp_getconstraints(lib=work,ds=example,outds=work.testme)
2 
3%mp_assertdsobs(work.testme,
4 desc=Test1 - check constraints recreated,
5 test=EQUALS 1,
6 outds=work.test_results
7)
3 Codeblock
DATA STEP / MACRO %mp_assert
Erklärung :
Dieser Block validiert das Sortierergebnis. Er verwendet einen `DATA _NULL_`, um den ersten Wert der Spalte `name` aus der sortierten Tabelle `work.example` zu lesen und speichert ihn in der Makro-Variable `test1`. Das Makro `%mp_assert` wird dann verwendet, um zu überprüfen, ob `test1` tatsächlich 'Alfred' ist, was bestätigt, dass die Tabelle in aufsteigender alphabetischer Reihenfolge nach der Spalte `name` sortiert wurde.
Kopiert!
1%let test1=0;
2DATA _null_;
3 SET work.example;
4 call symputx('test1',name);
5 stop;
6RUN;
7%mp_assert(
8 iftrue=(
9 %str(&test1)=%str(Alfred)
10 ),
11 desc=Check IF sort was appplied,
12 outds=work.test_results
13)
4 Codeblock
PROC SQL / MACRO %mp_sortinplace Data
Erklärung :
Dieser Block initiiert das zweite Testszenario. Er erstellt eine neue Tabelle `work.example2` aus `sashelp.classfit`, diesmal ohne Hinzufügen einer Primärschlüssel-Constraint. Das Makro `%mp_sortinplace` wird auf diese Tabelle angewendet, um sein Verhalten in Abwesenheit expliziter Constraints zu testen.
Kopiert!
1PROC SQL;
2create TABLE work.example2 as
3 select * from sashelp.classfit;
4%mp_sortinplace(work.example2)
5 Codeblock
MACRO %mp_assert / DATA STEP / MACRO %mp_assert
Erklärung :
Dieser Block enthält zwei Assertions für den zweiten Test. Die erste verwendet `%mp_assert`, um zu überprüfen, ob das Makro `%mp_sortinplace` erfolgreich ausgeführt wurde (Systemrückgabecode `&syscc` gleich 0), auch ohne Primärschlüssel. Die zweite Assertion, über einen `DATA _NULL_` und `%mp_assert`, überprüft erneut, ob die Sortierung korrekt angewendet wurde, indem sie bestätigt, dass der erste Wert von `name` in `work.example2` 'Alfred' ist.
Kopiert!
1%mp_assert(
2 iftrue=(
3 %str(&syscc)=%str(0)
4 ),
5 desc=Ensure no errors when no key exists,
6 outds=work.test_results
7)
8 
9%let test2=0;
10DATA _null_;
11 SET work.example2;
12 call symputx('test2',name);
13 stop;
14RUN;
15%mp_assert(
16 iftrue=(
17 %str(&test2)=%str(Alfred)
18 ),
19 desc=Check IF sort was appplied when no index exists,
20 outds=work.test_results
21)
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.