Veröffentlicht am :
ETL CREATION_INTERNE

Konvertierung von Zeichenvariablen in VARCHAR beim Laden in CAS

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript initialisiert zunächst eine CAS-Umgebung, indem es ein LIBNAME CASWORK definiert und Benutzeroptionen konfiguriert, um einstufige Tabellen an diese CASLIB zu leiten. Anschließend wird `PROC CAS` verwendet, um CASLIBs dynamisch zu verwalten, bei Bedarf zu löschen und eine neue CASLIB 'sas©7bdat' hinzuzufügen, die auf einen Datenpfad verweist. Testdaten mit Zeichenvariablen unterschiedlicher Länge werden über einen DATA-Schritt erstellt. Der zentrale Teil des Skripts ist die Verwendung von `PROC CASUTIL` mit der Option `importoptions=(filetype="basesas" varcharconversion=16)`, um die Datentabelle in CAS zu laden. Dabei werden Zeichenvariablen in VARCHAR konvertiert und auf eine maximale Länge von 16 Bytes gekürzt. Schließlich wird `PROC CAS` verwendet, um detaillierte Spalteninformationen der resultierenden CAS-Tabelle anzuzeigen, was die Überprüfung der VARCHAR-Konvertierung ermöglicht.
Datenanalyse

Type : CREATION_INTERNE


Die Quelldaten ('table_with_char') werden direkt innerhalb des Skripts über einen SAS DATA-Schritt zu Demonstrationszwecken generiert.

1 Codeblock
Konfiguration
Erklärung :
Dieser Block konfiguriert ein LIBNAME `CASWORK`, um eine Verbindung zur Cloud Analytic Services (CAS)-Engine über die CASLIB 'casuser' herzustellen. Die Anweisung `options USER = CASWORK;` definiert die Standard-CASLIB für einstufige Tabellen. Schließlich zeigt `%put &_sessref_;` die ID der aktiven CAS-Sitzung an.
Kopiert!
1LIBNAME CASWORK cas caslib=casuser;
2options USER = CASWORK;
3 
4%put &_sessref_;
2 Codeblock
PROC CAS
Erklärung :
Dieser Block verwendet `PROC CAS`, um direkt mit dem CAS-Controller zu interagieren. Er entfernt stillschweigend die CASLIBs 'sas7bdat' und 'sashdat', falls diese existieren, um eine saubere Umgebung zu gewährleisten. Anschließend fügt er eine neue CASLIB namens 'sas7bdat` hinzu, die auf einen Dateisystempfad (`&datapath`) verweist. Die Anweisung `caslib _all_ assign;` wird verwendet, um alle CAS-Librefs und Standard-CASLIBs an die SAS-Client-Sitzung zu binden.
Kopiert!
1PROC CAS;
2 file log;
3 TABLE.dropCaslib /
4 caslib='sas7bdat' quiet = true;
5RUN;
6 TABLE.dropCaslib /
7 caslib='sashdat' quiet = true;
8RUN;
9 addcaslib /
10 datasource={srctype="path"}
11 name="sas7bdat"
12 path="&datapath" ;
13 RUN;
14QUIT;
15/* Binds all CAS librefs and default CASLIBs to your SAS client */
16caslib _all_ assign;
3 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Schritt erstellt eine SAS-Tabelle namens `table_with_char` in der CASLIB 'sas7bdat'. Er initialisiert drei Zeichenvariablen (`a`, `b`, `c`) mit deklarierten Längen von 300, 15 und 16. Es werden Datensätze erstellt, von denen einige Daten enthalten, deren Länge die deklarierte Länge überschreitet, um den Effekt der VARCHAR-Konvertierung und der anschließenden Kürzung zu demonstrieren.
Kopiert!
1DATA sas7bdat.table_with_char;
2 LENGTH a $ 300 b $ 15 c $ 16;
3 a='a300'; b='b15' ; c='c16' ; OUTPUT;
4 a='a300300'; b='b151515'; c='c161616'; OUTPUT;
5 c='c161616161616161';
6 b='b15151515151515';
7 a="a300qzwsxedcrfvtgbyhnujmiklopqazwsxedcrfvtgbyhnujmikolp12345678901234567890123456789012345678901234567890123456789012345678901234567890"; OUTPUT;
8RUN;
4 Codeblock
PROC CASUTIL
Erklärung :
Dieser Block verwendet `PROC CASUTIL`, um die SAS-Tabelle `table_with_char` (in 'sas7bdat') in die CAS-Engine zu laden und sie in der CASLIB 'casuser' als `table_with_varchar` zu benennen. Die Option `importoptions=(filetype="basesas" varcharconversion=16)` ist entscheidend: Sie gibt an, dass Zeichenvariablen in CAS in den Typ VARCHAR konvertiert werden sollen und ihre maximale Länge auf 16 Bytes festgelegt wird, wobei längere Werte bei Bedarf gekürzt werden. Die Option `replace` stellt sicher, dass die Tabelle neu erstellt wird, falls sie bereits existiert.
Kopiert!
1PROC CASUTIL;
2 load casdata="table_with_char.sas7bdat" incaslib="sas7bdat" outcaslib="casuser"
3 casout="table_with_varchar" importoptions=(filetype="basesas" varcharconversion=16) replace;
4RUN;
5 Codeblock
PROC CAS
Erklärung :
Dieser letzte Block verwendet `PROC CAS`, um die neu erstellte CAS-Tabelle abzufragen. `sessionProp.setSessOpt` setzt die aktive CASLIB auf 'casuser'. Anschließend wird die Aktion `table.columninfo` auf `table_with_varchar` ausgeführt, um detaillierte Metadaten aller Spalten anzuzeigen, was die Überprüfung der Datentypen (insbesondere der VARCHAR-Konvertierung) und der effektiven Längen nach der Konvertierung ermöglicht.
Kopiert!
1PROC CAS;
2 sessionProp.setSessOpt /
3 caslib="casuser";
4RUN;
5 TABLE.columninfo / TABLE="table_with_varchar";
6QUIT;
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 © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0