Publicado el :
Gestión de datos CREATION_INTERNE

Detalles de Tabla (Acción tableDetails)

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta funcionalidad es crucial para el monitoreo y la optimización del rendimiento de las tablas en memoria en un entorno SAS© Viya. Proporciona una visión general de la estructura interna y la ocupación de memoria de una tabla CAS. Los parámetros permiten controlar el nivel de granularidad de la información (resumido, por nodo o por partición) e incluir detalles sobre el uso de la memoria. Es posible especificar la biblioteca CAS (caslib) donde reside la tabla y limitar la cantidad de información devuelta por nodo para tablas distribuidas muy grandes, lo que es particularmente útil para administradores y desarrolladores para comprender el estado de los datos en memoria.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan tablas CAS creadas directamente a través de DATA steps o acciones 'loadTable' para ilustrar la funcionalidad sin dependencia externa.

1 Bloque de código
PROC CAS Data
Explicación :
Este ejemplo demuestra el uso más simple de la acción 'tableDetails'. Primero crea una pequeña tabla llamada 'simple_data' en la caslib 'casuser', luego utiliza la acción para mostrar información resumida sobre esta tabla, como el número de filas y columnas. Por defecto, el nivel de agregación es 'SUM' y la información de memoria está incluida.
¡Copiado!
1PROC CAS;
2 /* Crée une table simple en mémoire dans la caslib 'casuser' */
3 DATA casuser.simple_data;
4 INPUT id name $;
5 DATALINES;
61 Alice
72 Bob
83 Charlie
9;
10 RUN;
11 
12 /* Obtient les détails de base pour la table 'simple_data' */
13 TABLE.tableDetails / name="simple_data";
14QUIT;
2 Bloque de código
PROC CAS Data
Explicación :
Este caso muestra cómo usar el parámetro 'caslib' para apuntar a una tabla específica si no se encuentra en la caslib activa. Se crea una tabla 'product_info' y sus detalles se recuperan especificando 'casuser' como caslib. También ilustra el uso del alias 'table' para el parámetro 'name'.
¡Copiado!
1PROC CAS;
2 /* Crée une table 'product_info' dans la caslib 'casuser' */
3 DATA casuser.product_info;
4 INPUT product $ price;
5 DATALINES;
6Apple 1.00
7Banana 0.50
8Orange 0.75
9Mango 2.20
10;
11 RUN;
12 
13 /* Obtient les détails pour 'product_info' en spécifiant explicitement la caslib. */
14 /* Utilisation de l'alias 'table' pour le paramètre 'name'. */
15 TABLE.tableDetails /
16 TABLE="product_info",
17 caslib="casuser";
18QUIT;
3 Bloque de código
PROC CAS Data
Explicación :
Este ejemplo utiliza una tabla más grande ('large_transactions') para ilustrar cómo obtener detalles a nivel de cada nodo del clúster CAS ('level="NODE"'). También excluye la información detallada sobre el uso de la memoria ('showMem=FALSE') para una salida más concisa, lo que es útil para tablas grandes distribuidas.
¡Copiado!
1PROC CAS;
2 /* Crée une table plus grande pour simuler la distribution sur plusieurs nœuds */
3 DATA casuser.large_transactions;
4 DO i = 1 to 10000;
5 region = IF mod(i, 4) = 0 THEN 'North'
6 ELSE IF mod(i, 4) = 1 THEN 'South'
7 ELSE IF mod(i, 4) = 2 THEN 'East'
8 ELSE 'West';
9 amount = 100 + ranuni(0) * 1000;
10 OUTPUT;
11 END;
12 RUN;
13 
14 /* Obtient les détails par nœud sans inclure les informations mémoire */
15 TABLE.tableDetails /
16 name="large_transactions",
17 caslib="casuser",
18 level="NODE",
19 showMem=FALSE;
20QUIT;
4 Bloque de código
PROC CAS / table.partition Data
Explicación :
Este ejemplo avanzado muestra cómo obtener detalles para una tabla particionada. Crea y particiona una tabla 'raw_sales' por la variable 'Region' usando la acción 'table.partition'. Luego, usa 'tableDetails' con 'level="PARTITION"' para mostrar la información de cada partición. El parámetro 'perNode=2' se usa para limitar la cantidad de detalles reportados por nodo, lo que es útil para manejar el tamaño de la salida con tablas muy distribuidas.
¡Copiado!
1PROC CAS;
2 /* Crée une table avec des données à partitionner */
3 DATA casuser.raw_sales;
4 INPUT Date:yymmdd. Region $ Sales;
5 FORMAT Date yymmdd10.;
6 DATALINES;
72023-01-01 North 100
82023-01-01 South 150
92023-01-02 East 120
102023-01-02 West 180
112023-01-03 North 110
122023-01-03 South 160
132023-01-04 East 130
142023-01-04 West 190
152023-01-05 North 200
162023-01-05 South 210
172023-01-06 East 220
182023-01-06 West 230
19;
20 RUN;
21 
22 /* Partitionne la table par la variable 'Region' */
23 TABLE.partition /
24 name="raw_sales",
25 caslib="casuser",
26 groupBy={"Region"},
27 casOut={name="partitioned_sales_by_region", caslib="casuser", replace=true};
28 
29 /* Obtient les détails par partition, en limitant la sortie à 2 blocs par nœud */
30 TABLE.tableDetails /
31 name="partitioned_sales_by_region",
32 caslib="casuser",
33 level="PARTITION",
34 perNode=2;
35QUIT;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.