Les exemples utilisent des tables CAS créées directement via des DATA steps ou des actions 'loadTable' pour illustrer la fonctionnalité sans dépendance externe.
1 Bloc de code
PROC CAS Data
Explication : Cet exemple démontre l'utilisation la plus simple de l'action 'tableDetails'. Il crée d'abord une petite table nommée 'simple_data' dans la caslib 'casuser', puis utilise l'action pour afficher des informations récapitulatives sur cette table, telles que le nombre de lignes et de colonnes. Par défaut, le niveau d'agrégation est 'SUM' et les informations mémoire sont incluses.
Copié !
proc cas;
/* Crée une table simple en mémoire dans la caslib 'casuser' */
data casuser.simple_data;
input id name $;
datalines;
1 Alice
2 Bob
3 Charlie
;
run;
/* Obtient les détails de base pour la table 'simple_data' */
table.tableDetails / name="simple_data";
quit;
1
PROC 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;
6
1 Alice
7
2 Bob
8
3 Charlie
9
;
10
RUN;
11
12
/* Obtient les détails de base pour la table 'simple_data' */
13
TABLE.tableDetails / name="simple_data";
14
QUIT;
2 Bloc de code
PROC CAS Data
Explication : Ce cas montre comment utiliser le paramètre 'caslib' pour cibler une table spécifique si elle ne se trouve pas dans la caslib active. Une table 'product_info' est créée, et ses détails sont récupérés en précisant 'casuser' comme caslib. Il illustre également l'utilisation de l'alias 'table' pour le paramètre 'name'.
Copié !
proc cas;
/* Crée une table 'product_info' dans la caslib 'casuser' */
data casuser.product_info;
input product $ price;
datalines;
Apple 1.00
Banana 0.50
Orange 0.75
Mango 2.20
;
run;
/* Obtient les détails pour 'product_info' en spécifiant explicitement la caslib. */
/* Utilisation de l'alias 'table' pour le paramètre 'name'. */
table.tableDetails /
table="product_info",
caslib="casuser";
quit;
1
PROC CAS;
2
/* Crée une table 'product_info' dans la caslib 'casuser' */
3
DATA casuser.product_info;
4
INPUT product $ price;
5
DATALINES;
6
Apple 1.00
7
Banana 0.50
8
Orange 0.75
9
Mango 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";
18
QUIT;
3 Bloc de code
PROC CAS Data
Explication : Cet exemple utilise une table plus volumineuse ('large_transactions') pour illustrer l'obtention de détails au niveau de chaque nœud du cluster CAS ('level="NODE"'). Il exclut également les informations détaillées sur l'utilisation de la mémoire ('showMem=FALSE') pour une sortie plus concise, ce qui est utile pour les grandes tables réparties.
Copié !
proc cas;
/* Crée une table plus grande pour simuler la distribution sur plusieurs nœuds */
data casuser.large_transactions;
do i = 1 to 10000;
region = if mod(i, 4) = 0 then 'North'
else if mod(i, 4) = 1 then 'South'
else if mod(i, 4) = 2 then 'East'
else 'West';
amount = 100 + ranuni(0) * 1000;
output;
end;
run;
/* Obtient les détails par nœud sans inclure les informations mémoire */
table.tableDetails /
name="large_transactions",
caslib="casuser",
level="NODE",
showMem=FALSE;
quit;
1
PROC 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
ELSEIF mod(i, 4) = 1THEN'South'
7
ELSEIF mod(i, 4) = 2THEN'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;
20
QUIT;
4 Bloc de code
PROC CAS / table.partition Data
Explication : Cet exemple avancé montre comment obtenir des détails pour une table partitionnée. Il crée et partitionne une table 'raw_sales' par la variable 'Region' à l'aide de l'action 'table.partition'. Ensuite, il utilise 'tableDetails' avec 'level="PARTITION"' pour afficher les informations pour chaque partition. Le paramètre 'perNode=2' est utilisé pour limiter la quantité de détails rapportée par nœud, ce qui est utile pour gérer la taille de la sortie avec des tables très distribuées.
Copié !
proc cas;
/* Crée une table avec des données à partitionner */
data casuser.raw_sales;
input Date:yymmdd. Region $ Sales;
format Date yymmdd10.;
datalines;
2023-01-01 North 100
2023-01-01 South 150
2023-01-02 East 120
2023-01-02 West 180
2023-01-03 North 110
2023-01-03 South 160
2023-01-04 East 130
2023-01-04 West 190
2023-01-05 North 200
2023-01-05 South 210
2023-01-06 East 220
2023-01-06 West 230
;
run;
/* Partitionne la table par la variable 'Region' */
table.partition /
name="raw_sales",
caslib="casuser",
groupBy={"Region"},
casOut={name="partitioned_sales_by_region", caslib="casuser", replace=true};
/* Obtient les détails par partition, en limitant la sortie à 2 blocs par nœud */
table.tableDetails /
name="partitioned_sales_by_region",
caslib="casuser",
level="PARTITION",
perNode=2;
quit;
1
PROC 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;
7
2023-01-01 North 100
8
2023-01-01 South 150
9
2023-01-02 East 120
10
2023-01-02 West 180
11
2023-01-03 North 110
12
2023-01-03 South 160
13
2023-01-04 East 130
14
2023-01-04 West 190
15
2023-01-05 North 200
16
2023-01-05 South 210
17
2023-01-06 East 220
18
2023-01-06 West 230
19
;
20
RUN;
21
22
/* Partitionne la table par la variable 'Region' */
/* 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;
35
QUIT;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« La gestion de la mémoire est le nerf de la guerre dans Cloud Analytic Services (CAS). L'action tableDetails est un outil de gouvernance indispensable pour identifier les tables qui consomment excessivement de ressources.
L'activation de showMem=TRUE révèle non seulement la taille réelle des données, mais aussi l'overhead mémoire associé. Pour les administrateurs, l'utilisation du paramètre perNode sur de très grandes tables est une 'best practice' : cela permet d'obtenir un échantillon représentatif de l'état des blocs sans saturer le journal d'exécution (log) avec des milliers de lignes, facilitant ainsi une prise de décision rapide sur le cycle de vie des données (archivage ou suppression des tables inactives). »
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.