Guide SAS VIYA

SAS Viya Tutorial: Alles über die Aktion table.tableInfo

L'équipe WeAreCAS 19/02/2024 14 vistas

In der SAS© Viya-Umgebung ist die Verwaltung von In-Memory-Daten entscheidend. Bevor eine Tabelle manipuliert wird, ist es oft notwendig, ihre Existenz zu überprüfen, ihre Größe zu kennen oder ihre Metadaten (Erstellungsdatum, Kodierung, Anzahl der Zeilen) abzurufen.

Hier kommt die Aktion tableInfo des Aktionssatzes table ins Spiel.

In diesem Tutorial werden wir untersuchen, wie Sie diesen für die Datenexploration wesentlichen Befehl verwenden, von seiner grundlegenden Syntax bis zur erweiterten Verwaltung von Platzhaltern.


Was ist die Aktion tableInfo?

Die Aktion tableInfo ermöglicht den Abruf detaillierter Metadaten zu einer oder mehreren im Speicher geladenen Tabellen in einem bestimmten Caslib.

Die Schlüsselparameter:

  • caslib: Der Name der CAS-Bibliothek, in der sich die Tabelle befindet.

  • name: Der Name der Zieltabelle.

  • quiet: Ein boolescher Wert (True/False). Wenn aktiviert, unterdrückt er Fehlermeldungen, wenn die Tabelle nicht existiert (sehr nützlich für automatisierte Skripte).

  • wildIgnore: Bestimmt, ob die Sonderzeichen (% und _) als Platzhalter (Wildcards) oder als literaler Text behandelt werden sollen.

  • wildEscape: Definiert das Escape-Zeichen, um das literale Lesen eines Platzhalters zu erzwingen.

Note :
Anwendungsfall 1: Grundlegende Verwendung
Ziel: Überprüfen der Informationen einer bestimmten Tabelle.

In diesem ersten Beispiel laden wir eine kleine Tabelle in den Speicher und fordern ihre Informationen an. Dies ist die Standardverwendung: Sie kennen den Namen der Tabelle und ihren Speicherort.
1cas;
2 
3/* 1. Création d'une table temporaire en mémoire CAS */
4DATA casuser.ma_table_basique;
5 INPUT ID Name $ Value;
6 DATALINES;
7 1 Alice 100
8 2 Bob 150
9 3 Charlie 120
10;
11RUN;
12 
13/* 2. Afficher les informations de la table */
14PROC CAS;
15 TABLE.tableInfo RESULT=r /
16 name="ma_table_basique"
17 caslib="casuser";
18 PRINT r;
19RUN;
Zuerst erstellen wir eine Tabelle ma_table_basique im persönlichen Caslib casuser. Dann wird die Aktion table.tableInfo aufgerufen. Das Ergebnis (gespeichert in der Variablen r) enthält Spalten wie Name, Rows (Anzahl der Zeilen), Columns (Anzahl der Spalten) und CreateTime.
Note :
Anwendungsfall 2: Umgang mit nicht existierenden Tabellen (Option Quiet)
Ziel: Verhindern, dass Ihr Programm abstürzt, wenn eine Tabelle fehlt.

Bei der Automatisierung von Prozessen kommt es vor, dass eine Tabelle noch nicht geladen ist. Standardmäßig würde SAS© einen Fehler zurückgeben. Die Option quiet ermöglicht es, dies sauber zu handhaben.
1cas;
2 
3/* Création d'une table de référence */
4DATA samples.produits_ventes;
5 INPUT Annee Produit $ Quantite Prix;
6 DATALINES;
7 2023 A 10 100
8 2023 B 20 50
9;
10RUN;
11 
12PROC CAS;
13 /* Cas A : Table introuvable avec quiet=TRUE */
14 TABLE.tableInfo RESULT=r_non_existent /
15 name="table_introuvable"
16 quiet=TRUE;
17
18 PRINT "Tentative sur table inexistante :";
19 PRINT r_non_existent;
20 
21 /* Cas B : Table existante standard */
22 TABLE.tableInfo RESULT=r_existent /
23 name="produits_ventes"
24 caslib="Samples";
25
26 PRINT "Tentative sur table existante :";
27 PRINT r_existent;
28RUN;
In Fall A suchen wir nach "table_introuvable". Dank quiet=TRUE zeigt das Protokoll keinen blockierenden roten Fehler an. Das Ergebnisobjekt ist leer oder zeigt einen "OK"-Status ohne Tabellendaten an, sodass Ihr Code seine Ausführung fortsetzen kann (z. B. um die fehlende Tabelle zu laden).
Note :
Anwendungsfall 3: Suche mit Platzhaltern (Wildcards)
Ziel: Alle Tabellen finden, die einem bestimmten Muster entsprechen (z. B. alle Tabellen für das Jahr 2023).

Wenn Sie mit vielen ähnlichen Tabellen arbeiten, ermöglichen Ihnen Platzhalter, Informationen für eine ganze Gruppe von Tabellen gleichzeitig abzurufen. Der wichtigste Parameter hierfür ist wildIgnore.
1cas;
2 
3/* Création de plusieurs tables pour l'exemple */
4DATA casuser.donnees_2023_Q1; ID=1; RUN;
5DATA casuser.donnees_2023_Q2; ID=2; RUN;
6DATA casuser.donnees_2024_Q1; ID=3; RUN;
7 
8PROC CAS;
9 /* Rechercher toutes les tables commençant par "donnees_2023_" */
10 TABLE.tableInfo RESULT=r_wildcard /
11 name="donnees_2023_%" /* Le motif recherché */
12 caslib="casuser"
13 wildIgnore=FALSE; /* Active l'interprétation du '%' */
14
15 PRINT r_wildcard;
16RUN;
Hier ist wildIgnore=FALSE unerlässlich. Es weist CAS an: "Behandle das Zeichen % nicht als Buchstaben, sondern als Platzhalter". Die Aktion gibt daher die Metadaten für donnees_2023_Q1 und donnees_2023_Q2 zurück, ignoriert aber die von 2024.
Note :
Anwendungsfall 4: Escape von Sonderzeichen
Ziel: Eine Tabelle finden, deren Name tatsächlich ein % oder ein _ enthält.

Dies ist ein seltenerer, aber technischer Fall. Wenn Ihre Tabelle resultat_final_%_test heißt, wie können Sie sie suchen, ohne dass das % als Platzhalter angesehen wird? Sie müssen ein Escape-Zeichen über wildEscape verwenden.
1cas;
2 
3/* Création d'une table avec un nom complexe */
4DATA casuser."resultat_final_%_test";
5 ID=10; Score=95.5;
6RUN;
7 
8PROC CAS;
9 TABLE.tableInfo RESULT=r_escape /
10 name="resultat_final_\%_test" /* Le \ protège le % */
11 caslib="casuser"
12 wildIgnore=FALSE /* On garde le mode wildcard actif */
13 wildEscape="\\"; /* On définit \ comme le protecteur */
14
15 PRINT r_escape;
16RUN;
In diesem Beispiel:

wildIgnore=FALSE: Der Platzhaltermodus ist aktiv (notwendig, um wildEscape zu verwenden).

wildEscape="\\": Wir definieren den Backslash als Schutzzeichen. (Hinweis: Wir verwenden zwei Backslashes, da der Backslash in einer SAS©-Zeichenkette selbst escaped werden muss).

name="...\%...": Der Backslash vor dem Prozentzeichen weist CAS an, das Zeichen % wörtlich zu suchen und es nicht zur Ersetzung von beliebigem Text zu verwenden.

Die Aktion tableInfo ist weit mehr als nur ein einfacher Überprüfungsbefehl. Die Beherrschung ihrer Parameter quiet und wildIgnore ermöglicht es Ihnen, robuste und dynamische ETL-Skripte (Extract, Transform, Load) in SAS© Viya zu erstellen, die sich an verändernde Datenumgebungen anpassen können.