Aquí es donde entra en juego la acción tableInfo del conjunto de acciones table.
En este tutorial, exploraremos cómo usar este comando esencial para la exploración de datos, desde su sintaxis básica hasta la gestión avanzada de caracteres comodín.
La acción tableInfo permite obtener metadatos detallados sobre una o varias tablas cargadas en memoria en un caslib específico.
Los parámetros clave:
caslib : El nombre de la biblioteca CAS donde se encuentra la tabla.
name : El nombre de la tabla objetivo.
quiet : Un booleano (True/False). Si está activado, suprime los mensajes de error si la tabla no existe (muy útil para scripts automatizados).
wildIgnore : Determina si los caracteres especiales (% y _) deben ser tratados como comodines (wildcards) o como texto literal.
wildEscape : Define el carácter de escape para forzar la lectura literal de un comodín.
Note :
Caso práctico 1: Uso básico
Objetivo: Verificar la información de una tabla específica.
En este primer ejemplo, cargaremos una pequeña tabla en memoria y solicitaremos su información. Este es el uso más estándar: conoce el nombre de la tabla y su ubicación.
cas;
/* 1. Création d'une table temporaire en mémoire CAS */
DATA casuser.ma_table_basique;
INPUT ID Name $ Value;
DATALINES;
1 Alice 100
2 Bob 150
3 Charlie 120
;
RUN;
/* 2. Afficher les informations de la table */
PROC CAS;
TABLE.tableInfo RESULT=r /
name="ma_table_basique"
caslib="casuser";
PRINT r;
RUN;
1
cas;
2
3
/* 1. Création d'une table temporaire en mémoire CAS */
4
DATA casuser.ma_table_basique;
5
INPUT ID Name $ Value;
6
DATALINES;
7
1 Alice 100
8
2 Bob 150
9
3 Charlie 120
10
;
11
RUN;
12
13
/* 2. Afficher les informations de la table */
14
PROC CAS;
15
TABLE.tableInfo RESULT=r /
16
name="ma_table_basique"
17
caslib="casuser";
18
PRINT r;
19
RUN;
Primero creamos una tabla ma_table_basique en el caslib personal casuser. Luego, se llama a la acción table.tableInfo. El resultado (almacenado en la variable r) contendrá columnas como Name, Rows (número de filas), Columns (número de columnas) y CreateTime.
Note :
Caso práctico 2: Gestionar tablas inexistentes (Opción Quiet)
Objetivo: Evitar que su programa falle si una tabla no está presente.
cas;
/* Création d'une table de référence */
DATA samples.produits_ventes;
INPUT Annee Produit $ Quantite Prix;
DATALINES;
2023 A 10 100
2023 B 20 50
;
RUN;
PROC CAS;
/* Cas A : Table introuvable avec quiet=TRUE */
TABLE.tableInfo RESULT=r_non_existent /
name="table_introuvable"
quiet=TRUE;
PRINT "Tentative sur table inexistante :";
PRINT r_non_existent;
/* Cas B : Table existante standard */
TABLE.tableInfo RESULT=r_existent /
name="produits_ventes"
caslib="Samples";
PRINT "Tentative sur table existante :";
PRINT r_existent;
RUN;
1
cas;
2
3
/* Création d'une table de référence */
4
DATA samples.produits_ventes;
5
INPUT Annee Produit $ Quantite Prix;
6
DATALINES;
7
2023 A 10100
8
2023 B 2050
9
;
10
RUN;
11
12
PROC 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;
28
RUN;
En el Caso A, buscamos "table_introuvable". Gracias a quiet=TRUE, el registro no mostrará un error rojo bloqueante. El objeto resultado estará vacío o indicará un estado "OK" pero sin datos de tabla, lo que permite que su código continúe su ejecución (por ejemplo, para cargar la tabla faltante).
Note :
En el Caso A, buscamos "table_introuvable". Gracias a quiet=TRUE, el registro no mostrará un error rojo bloqueante. El objeto resultado estará vacío o indicará un estado "OK" pero sin datos de tabla, lo que permite que su código continúe su ejecución (por ejemplo, para cargar la tabla faltante).
cas;
/* Création de plusieurs tables pour l'exemple */
DATA casuser.donnees_2023_Q1; ID=1; RUN;
DATA casuser.donnees_2023_Q2; ID=2; RUN;
DATA casuser.donnees_2024_Q1; ID=3; RUN;
PROC CAS;
/* Rechercher toutes les tables commençant par "donnees_2023_" */
TABLE.tableInfo RESULT=r_wildcard /
name="donnees_2023_%" /* Le motif recherché */
caslib="casuser"
wildIgnore=FALSE; /* Active l'interprétation du '%' */
PRINT r_wildcard;
RUN;
1
cas;
2
3
/* Création de plusieurs tables pour l'exemple */
4
DATA casuser.donnees_2023_Q1; ID=1; RUN;
5
DATA casuser.donnees_2023_Q2; ID=2; RUN;
6
DATA casuser.donnees_2024_Q1; ID=3; RUN;
7
8
PROC 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;
16
RUN;
Aquí, wildIgnore=FALSE es esencial. Le dice a CAS: "No trates el carácter % como una letra, sino como un comodín". La acción devolverá los metadatos para donnees_2023_Q1 y donnees_2023_Q2, pero ignorará los de 2024.
Note :
Caso práctico 4: Escapar caracteres especiales
Objetivo: Encontrar una tabla cuyo nombre contenga realmente un % o un _.
Este es un caso más raro pero técnico. Si su tabla se llama resultat_final_%_test, ¿cómo buscarla sin que el % sea visto como un comodín? Debe usar un carácter de escape a través de wildEscape.
cas;
/* Création d'une table avec un nom complexe */
DATA casuser."resultat_final_%_test";
ID=10; Score=95.5;
RUN;
PROC CAS;
TABLE.tableInfo RESULT=r_escape /
name="resultat_final_\%_test" /* Le \ protège le % */
caslib="casuser"
wildIgnore=FALSE /* On garde le mode wildcard actif */
wildEscape="\\"; /* On définit \ comme le protecteur */
PRINT r_escape;
RUN;
1
cas;
2
3
/* Création d'une table avec un nom complexe */
4
DATA casuser."resultat_final_%_test";
5
ID=10; Score=95.5;
6
RUN;
7
8
PROC 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;
16
RUN;
En este ejemplo:
wildIgnore=FALSE: El modo comodín está activo (necesario para usar wildEscape).
name="...\%...": La barra invertida delante del porcentaje indica a CAS que busque el carácter % literalmente, y no que lo use para reemplazar cualquier texto.
Les codes et exemples fournis sur WeAreCAS.eu sont à but pédagogique. Il est impératif de ne pas les copier-coller aveuglément sur vos environnements de production. La meilleure approche consiste à comprendre la logique avant de l'appliquer. Nous vous recommandons vivement de tester ces scripts dans un environnement de test (Sandbox/Dev). WeAreCAS décline toute responsabilité quant aux éventuels impacts ou pertes de données sur vos systèmes.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.