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!
proc sql;
create table work.example as
select * from sashelp.classfit;
alter table work.example
add constraint pk primary key(name);
%mp_sortinplace(work.example)
1
PROC SQL;
2
create TABLE work.example as
3
select * from sashelp.classfit;
4
alter 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.
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!
%let test1=0;
data _null_;
set work.example;
call symputx('test1',name);
stop;
run;
%mp_assert(
iftrue=(
%str(&test1)=%str(Alfred)
),
desc=Check if sort was appplied,
outds=work.test_results
)
1
%let test1=0;
2
DATA _null_;
3
SET work.example;
4
call symputx('test1',name);
5
stop;
6
RUN;
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!
proc sql;
create table work.example2 as
select * from sashelp.classfit;
%mp_sortinplace(work.example2)
1
PROC SQL;
2
create 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!
%mp_assert(
iftrue=(
%str(&syscc)=%str(0)
),
desc=Ensure no errors when no key exists,
outds=work.test_results
)
%let test2=0;
data _null_;
set work.example2;
call symputx('test2',name);
stop;
run;
%mp_assert(
iftrue=(
%str(&test2)=%str(Alfred)
),
desc=Check if sort was appplied when no index exists,
outds=work.test_results
)
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;
10
DATA _null_;
11
SET work.example2;
12
call symputx('test2',name);
13
stop;
14
RUN;
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.
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.