Veröffentlicht am :
Datenzugriff INTERNE_ERSTELLUNG

Zugriff auf Daten über ein Libref

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Diese Dokumentation beleuchtet die grundlegenden Konzepte der Verwaltung von SAS©-Bibliotheken und des Datenzugriffs. Jeder Abschnitt präsentiert ein spezifisches Szenario mit dem entsprechenden SAS©-Code, detaillierten Erklärungen und wichtigen Hinweisen. Der Fokus liegt auf der Kompatibilität mit SAS© Viya 4 und SAS© Studio, um sicherzustellen, dass der Code eigenständig und direkt ausführbar ist.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.

1 Codeblock
LIBNAME, DATA STEP, PROC PRINT Data
Erklärung :
Die LIBNAME-Anweisung weist das Libref sales dem Speicherort einer Bibliothek zu. Ersetzen Sie den Pfad zu Ihrer Bibliothek durch library-path. Der Speicherort muss bereits existieren und für den SAS Compute Server zugänglich sein. Der DATA-Schritt erstellt den Datensatz sales.quarter1 und speichert ihn am physischen Speicherort der Bibliothek. Der PROC PRINT-Schritt referenziert den Datensatz über seinen zweistufigen Namen, sales.quarter1.
Kopiert!
1LIBNAME sales 'library-path';
2DATA sales.quarter1;
3 LENGTH mileage 4;
4 INPUT account mileage;
5 DATALINES;
61 932
72 563
8;
9PROC PRINT DATA=sales.quarter1;
10RUN;
2 Codeblock
Macro, %SYSFUNC, fonction LIBNAME, fonction LIBREF
Erklärung :
Die Makrovariable mylibref gibt den Namen des Librefs, new, an. Die Makrovariable mydirectory gibt den Speicherort der Bibliothek an. Ersetzen Sie den Pfad zu Ihrer Bibliothek durch library-location. Der Speicherort muss bereits existieren und für den Compute Server zugänglich sein. Eine IF-THEN-ELSE-Anweisung ruft die Makrofunktion %SYSFUNC auf, die wiederum die LIBNAME-Funktion aufruft, um die Zuweisung der Bibliothek zu versuchen. Tritt ein Fehler oder eine Warnung auf, wird die Meldung in das SAS-Protokoll geschrieben. Tritt kein Fehler oder keine Warnung auf, wird success in das Protokoll geschrieben. Beachten Sie, dass Sie in einer Makroanweisung Zeichenketten nicht in Anführungszeichen setzen. Eine weitere IF-THEN-ELSE-Anweisung ruft die Makrofunktion %SYSFUNC auf, die die LIBREF-Funktion aufruft, um die Zuweisung der Bibliothek zu überprüfen. Auch hier gilt: Tritt ein Fehler oder eine Warnung auf, wird die Meldung in das SAS-Protokoll geschrieben. Tritt kein Fehler oder keine Warnung auf, wird eine informative Meldung in das Protokoll geschrieben. Das Makro test wird ausgeführt.
Kopiert!
1%macro test;
2 %let mylibref=new;
3 %let mydirectory=library-location;
4 %IF %sysfunc(LIBNAME(&mylibref,&mydirectory)) %THEN
5 %put %sysfunc(sysmsg());
6 %ELSE %put success;
7 %IF %sysfunc(libref(&mylibref)) %THEN
8 %put %sysfunc(sysmsg());
9 %ELSE %put library &mylibref is assigned to &mydirectory;
10%mend test;
11 
12%test
3 Codeblock
LIBNAME
Erklärung :
Die LIBNAME-Anweisung verkettet zwei SAS-Bibliotheken. Die folgende Abbildung zeigt die Verkettung. Beachten Sie, dass der Index für apples nicht in der Verkettung erscheint. Der Datensatz lib2.apples hat einen Index. Der Datensatz lib1.apples hat jedoch keinen Index, und lib1 wird zuerst in der Verkettung aufgeführt. SAS entfernt den Index, wenn sein zugehöriger Datensatz nicht Teil der Verkettung ist. Wenn mehrere Kataloge denselben Namen tragen, werden ihre Einträge verkettet. Der Katalog lib3.formats kombiniert die Einträge der Kataloge lib1.formats und lib2.formats. Weitere Details finden Sie unter Catalog Concatenation in SAS V9 LIBNAME Engine: Reference. Die Kernidee ist, dass die Verkettung von Bibliotheken es Ihnen ermöglicht, mehrere an verschiedenen physischen Orten gespeicherte Bibliotheken zu referenzieren. Wenn ein Datensatz zur Eingabe oder Aktualisierung geöffnet wird, werden die verketteten Bibliotheken durchsucht und die erste Übereinstimmung des Datensatzes verwendet. Wenn ein Datensatz erstellt wird, wird er in der ersten in der Verkettung aufgeführten Bibliothek erstellt, selbst wenn eine Datei mit demselben Namen in einer anderen Bibliothek der Verkettung existiert. Unerwünschtes Verhalten könnte auftreten, wenn Datensätze mit demselben Namen an verschiedenen Orten existieren.
Kopiert!
1LIBNAME lib3 (lib1 lib2);
4 Codeblock
OPTIONS, SIGNON, LIBNAME, PROC DATASETS
Erklärung :
Die Systemoption COMAMID= spezifiziert TCP/IP als Kommunikationszugriffsmethode. Die Makrovariable myserver wird dem Hostnamen des entfernten SAS/CONNECT-Servers zugewiesen. Die SIGNON-Anweisung referenziert die Makrovariable myserver, gefolgt von der Portnummer, auf der der SAS/CONNECT Spawner lauscht. Wenn Ihre Portnummer oder Ihr Dienstname in der Makrovariablen definiert ist, lassen Sie diese aus der SIGNON-Anweisung weg. Geben Sie in der LIBNAME-Anweisung keine Engine an. Geben Sie den Speicherort Ihrer Daten an und spezifizieren Sie die Makrovariable myserver in der Option SERVER=. Fügen Sie die Portnummer hinzu, wenn diese in der SIGNON-Anweisung angegeben ist. PROC DATASETS wird auf dem Client ausgeführt. Obwohl der Client auf Daten zugreift, die sich auf dem Server befinden, werden die Daten nicht auf die lokale Festplatte des Clients geschrieben.
Kopiert!
1options comamid=tcp;
2%let myserver=host.name.com;
3signon myserver.__1234 user=userid password='mypw';
4LIBNAME reports '/myremotedata' server=myserver.__1234;
5PROC DATASETS library=reports;
6RUN;
7QUIT;
8signoff myserver.__1234;
5 Codeblock
LIBNAME
Erklärung :
Die LIBNAME-Anweisung weist das Libref davdata dem URL-Speicherort eines WebDAV-Servers zu. Die Option WEBDAV ist erforderlich, um auf einen WebDAV-Server zuzugreifen.
Kopiert!
1LIBNAME davdata v9 "https://www.webserver.com/datadir"
2webdav user="userid" pw="12345";
3 
6 Codeblock
LIBNAME, DATA STEP, PROC DATASETS Data
Erklärung :
Die LIBNAME-Anweisung spezifiziert das Libref mytddata und TERADATA, den Engine-Spitznamen für SAS/ACCESS Interface to Teradata. Die Anweisung spezifiziert auch die Verbindungsoptionen für Teradata. Ändern Sie diese Optionen, um Ihre SAS/ACCESS-Verbindungswerte und alle anderen benötigten Optionen anzugeben. Der DATA-Schritt erstellt eine Tabelle namens grades. Die Tabelle befindet sich im Teradata-DBMS und ist kein SAS-Datensatz. Die PROC DATASETS-Ausgabe für die Bibliothek mytddata zeigt, dass die Engine Teradata ist. Für die Tabelle grades ist der SAS-Member-Typ DATA und der DBMS-Member-Typ TABLE.
Kopiert!
1LIBNAME mytddata teradata server=mytera user=myid password=mypw;
2DATA mytddata.grades;
3 INPUT student $ test1 test2 final;
4 DATALINES;
5Fred 66 80 70
6Wilma 97 91 98
7;
8PROC DATASETS library=mytddata;
9RUN;
10QUIT;
7 Codeblock
LIBNAME, DATA STEP, PROC PRINT, PROC DATASETS
Erklärung :
In der LIBNAME-Anweisung wird das Libref target einem SAS-Bibliotheksspeicherort zugewiesen. Ersetzen Sie den Pfad zu Ihrer Bibliothek durch library-path. Es ist keine Engine angegeben, daher weist SAS standardmäßig die V9-Engine zu. Dies ist dieselbe SAS/ACCESS LIBNAME-Anweisung wie im Beispiel 'Zugriff auf DBMS-Daten als SAS-Bibliothek'. Der DATA-Schritt erstellt eine SAS-Ansicht namens highgrades, die sich auf die Teradata-Tabelle grades bezieht. Die Ansicht enthält die Zeilen, in denen die Variable final größer als 80 ist. PROC PRINT führt die Ansicht aus. Beachten Sie, dass DATA-Schritt-Ansichten die LIBNAME-Anweisung nicht beibehalten. Wenn Sie daher auf diese Ansicht verweisen, müssen Sie zuerst die LIBNAME-Anweisungen für die Bibliothek mytddata sowie die Bibliothek target übermitteln.
Kopiert!
1LIBNAME target 'library-path';
2LIBNAME mytddata teradata server=mytera user=myid password=mypw;
3DATA target.highgrades / view=target.highgrades;
4 SET mytddata.grades;
5 where final gt 80;
6RUN;
7PROC PRINT DATA=target.highgrades;
8RUN;
8 Codeblock
OPTIONS, LIBNAME
Erklärung :
Dieses Beispiel definiert die Systemoption DLCREATEDIR, um einen Unterordner für eine Bibliothek zu erstellen. Im Beispiel existiert der Ordner /home/userid/mydata/, aber der Unterordner project existiert nicht. Da die Systemoption DLCREATEDIR gesetzt ist, erstellt SAS project.
Kopiert!
1options dlcreatedir;
2LIBNAME mynewlib '/home/userid/mydata/project';
3 
9 Codeblock
LIBNAME
Erklärung :
Diese Anweisung hebt die Zuweisung des Librefs mylib von seinem physischen Speicherort auf.
Kopiert!
1LIBNAME mylib clear;
10 Codeblock
LIBNAME
Erklärung :
Verwenden Sie das Schlüsselwort _ALL_ in der LIBNAME-Anweisung, um alle Bibliothekszuweisungen (außer Systembibliotheken) aufzuheben.
Kopiert!
1LIBNAME _all_ clear;
11 Codeblock
Macro, %SYSFUNC, fonction LIBNAME
Erklärung :
Sie können auch die LIBNAME-Funktion verwenden. Der folgende Code hebt die Zuweisung des Librefs new auf, das im Beispiel 'Zuweisen eines Librefs mit einer Funktion' zugewiesen wurde.
Kopiert!
1%macro test;
2 %IF (%sysfunc(LIBNAME(new))) %THEN
3 %put %sysfunc(sysmsg());
4%mend test;
5%test
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved