Guide SAS VIYA

Tutorial de SAS Viya: Todo sobre la acción table.tableInfoTodo sobre la acción table.tableInfo

L'équipe WeAreCAS 19/02/2024 21 vues

En el entorno de SAS© Viya, la gestión de datos en memoria es crucial. Antes de manipular una tabla, a menudo es necesario verificar su existencia, conocer su tamaño o recuperar sus metadatos (fecha de creación, codificación, número de filas).

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.


¿Qué es la acción tableInfo?

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.
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;
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.

Cuando automatiza procesos, a veces una tabla aún no está cargada. Por defecto, SAS© devolvería un error. La opción quiet permite gestionar esto de forma limpia.
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;
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).
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;
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.
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;
En este ejemplo:

wildIgnore=FALSE: El modo comodín está activo (necesario para usar wildEscape).

wildEscape="\\": Definimos la barra invertida como carácter de protección. (Nota: se usan dos barras invertidas porque en una cadena SAS©, la barra invertida debe escaparse a sí misma).

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.

La acción tableInfo es mucho más que un simple comando de verificación. Dominar sus parámetros quiet y wildIgnore le permite construir scripts ETL (Extract, Transform, Load) robustos y dinámicos en SAS© Viya, capaces de adaptarse a entornos de datos cambiantes.