?>Array ( [id] => 84 ) Testen von Konflikten, Fehlern und Suchreihenfolgen mit mehreren Formatbibliotheken - WeAreCAS
sessionProp addFmtLib

Testen von Konflikten, Fehlern und Suchreihenfolgen mit mehreren Formatbibliotheken

Scénario de test & Cas d'usage

Contexte Métier

Ein Data-Governance-Team muss die Regeln für die Formatverwaltung definieren. Es muss verstehen, wie das System auf Konflikte reagiert, wenn mehrere Formatbibliotheken mit überlappenden Definitionen geladen werden. Außerdem sollen Fehlerbedingungen getestet werden, z. B. das Laden aus einem nicht existierenden Pfad. Dieses Szenario testet die `fmtSearch`-Logik und die Fehlerbehandlung.
Préparation des Données

Erstellt eine Tabelle mit Sensordaten ('sensordaten') und zwei konkurrierende Formatbibliotheken ('basis_formate', 'override_formate') mit unterschiedlichen Definitionen für denselben Code.

Copié !
1PROC FORMAT;
2 value StatusBasis 1='OK' 2='WARNUNG' 9='UNBEKANNT';
3 value StatusOverride 2='KRITISCH' 3='FEHLER';
4RUN;
5 
6DATA casuser.sensordaten;
7 INPUT StatusCode;
8 DATALINES;
91
102
113
129
13;
14RUN;
15 
16PROC casutil;
17 save casdata='work.formats' outcaslib='casuser' casout='basis_formate' options={FORMAT='StatusBasis'} replace;
18 save casdata='work.formats' outcaslib='casuser' casout='override_formate' options={FORMAT='StatusOverride'} replace;
19QUIT;

Étapes de réalisation

1
Laden der Basis-Formatbibliothek. Diese wird standardmäßig an die Suchliste angehängt ('APPEND').
Copié !
1PROC CAS;
2 sessionprop.addFmtLib / caslib='casuser' name='basis_formate' fmtLibName='BasisLib';
3QUIT;
2
Laden der Override-Formatbibliothek mit `fmtSearch='INSERT'`, wodurch sie am Anfang der Suchliste platziert wird.
Copié !
1PROC CAS;
2 sessionprop.addFmtLib / caslib='casuser' name='override_formate' fmtLibName='OverrideLib' fmtSearch='INSERT';
3QUIT;
3
Anwenden beider Formate. Da 'OverrideLib' zuerst durchsucht wird, sollte der Code 2 als 'KRITISCH' und nicht als 'WARNUNG' formatiert werden.
Copié !
1PROC CAS;
2 SIMPLE.freq / TABLE={caslib='casuser', name='sensordaten'} inputs={{name='StatusCode', FORMAT='StatusBasis.'}, {name='StatusCode', FORMAT='StatusOverride.'}};
3QUIT;
4
Versuch, eine Formatbibliothek von einem ungültigen Pfad zu laden. Ein Fehler im Protokoll wird erwartet.
Copié !
1PROC CAS;
2 sessionprop.addFmtLib / path='/ungueltiger/pfad/formate.sashdat' fmtLibName='FehlerTest';
3QUIT;

Résultat Attendu


Die Frequenzergebnisse für Schritt 3 zeigen, dass der StatusCode 2 als 'KRITISCH' interpretiert wird, was beweist, dass die mit `fmtSearch='INSERT'` geladene Bibliothek Vorrang hat. Der Code 1 wird als 'OK' und 9 als 'UNBEKANNT' aus der Basisbibliothek formatiert. Schritt 4 erzeugt einen erwarteten Fehler im SAS-Protokoll, der anzeigt, dass der Pfad nicht gefunden wurde. Dies bestätigt die korrekte Funktionsweise der Suchhierarchie und der Fehlerbehandlung.