SAS9

Wie kopiert man die Struktur einer Tabelle ohne die Daten?

Simon 10 vistas

Bei der täglichen Datenverwaltung in SAS© kommt es häufig vor, dass man eine vorhandene Tabelle duplizieren muss. Aber was tun, wenn Sie nur das „Gerüst“ der Tabelle (die Variablen, Formate, Typen) wollen, ohne die Tausenden oder Millionen von Zeilen zu importieren, die sie enthält?

Ob Sie nun eine leere Vorlage für eine neue Dateneingabe erstellen oder eine Archivtabelle initialisieren möchten, hier ist die einfachste und effizienteste Methode, um eine Tabellenstruktur von einer Bibliothek in eine andere zu kopieren.

Note :
Die eleganteste Methode in SAS© Base beruht auf der Verwendung des DATA-Schritts in Kombination mit der STOP-Anweisung.
1DATA ma_lib.nouvelle_table;
2 SET autre_lib.ancienne_table;
3 STOP;
4RUN;
Note :
Stellen Sie sich vor, Sie haben eine Tabelle VENTES_2023 in der Bibliothek PROD und möchten eine leere Struktur VENTES_2024 in Ihrer WORK-Bibliothek erstellen.
1DATA work.ventes_2024;
2 SET prod.ventes_2023;
3 STOP;
4RUN;
Ergebnis: Sie erhalten eine Tabelle work.ventes_2024, die genau dieselben Spalten wie das Original enthält, aber völlig leer ist.

Warum funktioniert das?

Um diesen Trick zu verstehen, muss man unter die Haube der SAS©-Engine schauen:

  1. Die SET-Anweisung: Zum Zeitpunkt der Kompilierung liest SAS© den Deskriptor der Quelltabelle (prod.ventes_2023). Er bereitet den „Programmdatenvektor“ (PDV) mit allen Variablen und ihren Attributen vor. Die Struktur ist also fertig.

  2. Die STOP-Anweisung: Normalerweise funktioniert der DATA-Schritt wie eine implizite Schleife, die die Zeilen einzeln liest. Die STOP-Anweisung erzwingt den sofortigen Abbruch des DATA-Schritts, bevor auch nur die erste Datenzeile in den PDV geladen und in die Ausgabetabelle geschrieben wird.

Genau diese sofortige Unterbrechung ermöglicht es, die Struktur (die bei der Kompilierung definiert wurde) zu speichern, ohne jemals die Daten zu verarbeiten (Ausführung).

Wenn Sie das nächste Mal eine leere Tabellenvorlage benötigen, denken Sie daran: Ein einfaches STOP genügt!