table

addTable

##set_table ##data_management

Description

L'action addTableAction CAS permettant de créer une table en mémoire à partir de données locales ou de résultats d'étapes de traitement. Elle est essentielle pour l'analyse interactive et temporaire dans Viya. permet d'ajouter une table en l'envoyant du client vers le serveur CASMoteur analytique "in-memory" de SAS Viya. Il traite les données en parallèle (MPP) sur plusieurs nœuds pour offrir une puissance de calcul massive et une exécution ultra-rapide des actions.. Mais attention, petite subtilité (et non des moindres !) : contrairement aux actions classiques comme loadTableAction d'action CAS permettant de charger une table en mémoire depuis un caslib. Elle rend les données disponibles pour l'analyse analytique distribuée et le traitement haute performance., vous ne pouvez pas appeler directement addTableAction CAS permettant de créer une table en mémoire à partir de données locales ou de résultats d'étapes de traitement. Elle est essentielle pour l'analyse interactive et temporaire dans Viya. depuis CASLLangage de script de SAS Viya utilisé pour interagir avec le serveur CAS. Il permet de combiner des actions CAS, de gérer la logique de programmation et de manipuler les résultats en mémoire., Python ou d'autres clients. Chaque client fournit sa propre fonction ou méthode magique (comme l'instruction UPLOAD en CASLLangage de script de SAS Viya utilisé pour interagir avec le serveur CAS. Il permet de combiner des actions CAS, de gérer la logique de programmation et de manipuler les résultats en mémoire.) pour transférer les données, qui invoquera addTableAction CAS permettant de créer une table en mémoire à partir de données locales ou de résultats d'étapes de traitement. Elle est essentielle pour l'analyse interactive et temporaire dans Viya. en coulisses. C'est un peu le livreur de l'ombre de vos données !

Syntaxe Officielle
table.addTable <result=results> <status=rc> /
append=TRUE | FALSE,
caslib="string",
columnar=TRUE | FALSE,
commitRecords=64-bit-integer,
commitSeconds=64-bit-integer,
compress=TRUE | FALSE,
copies=integer,
descending={integer-1 <, integer-2, ...>},
label="string",
maxMBytes=64-bit-integer,
memoryFormat="DVR" | "INHERIT" | "STANDARD",
orderBy={"variable-name-1" <, "variable-name-2", ...>},
partition={"variable-name-1" <, "variable-name-2", ...>},
promote=TRUE | FALSE,
recLen=integer, /* REQUIS */
repeat=TRUE | FALSE,
replace=TRUE | FALSE,
table="table-name",
vars={{format="string", formattedLength=integer, label="string", length=integer, name="string", nfd=integer, nfl=integer, offset=integer, precision=integer, rType="CHAR" | "NUMERIC", type="BINARY" | "INT32" | "INT64" | "SAS" | "UNKNOWN" | "VARBINARY" | "VARCHAR"}, {...}};

Paramètres Clés

Nom du paramètre Description
append Spécifie s'il faut ajouter les lignes à une table existante.
caslib Indique la caslib cible où la table sera stockée.
columnar Spécifie s'il faut créer la table en mémoire au format en colonnes.
commitRecords Nombre de lignes à recevoir avant de valider l'insertion dans la table.
commitSeconds Nombre de secondes d'attente avant de valider l'insertion des lignes reçues.
compress Si défini sur True, compresse la table cible pour gagner de la place (idéal si vous êtes à l'étroit !).
copies Définit le nombre de copies redondantes pour la tolérance aux pannes (0 = aucune redondance).
maxMBytes Quantité maximale de mémoire physique (en Mo) à allouer avant de passer aux fichiers temporaires du système d'exploitation.
memoryFormat Le format mémoire de la table en sortie ('DVR' pour réduire les doublons, 'STANDARD', ou 'INHERIT').
orderBy / partition Gère le partitionnement et le tri interne des données.
promote Rend la table globale pour qu'elle soit accessible par d'autres sessions.
recLen Requis. Longueur d'une ligne en octets.
repeat Duplique toutes les lignes de la table sur chaque nœud (parfait pour les petites tables de dimension).
replace Écrase la table si elle existe déjà.
table Le nom de la table en sortie.
vars Définition précise des attributs de chaque variable (longueur, nom, type, offset, etc.).

Préparation des données

Création d'un jeu de données local

Comme l'action addTable est invoquée implicitement lors du transfert de données depuis le client, préparons d'abord un jeu de données SAS côté client (dans la session Compute) que nous allons ensuite envoyer à CAS.

1DATA work.mes_donnees;
2 DO i = 1 to 10;
3 nom = cats('Utilisateur_', i);
4 score = rand('integer', 1, 100);
5 OUTPUT;
6 END;
7RUN;

Exemples d'utilisation

Transfert simple via CASL (Upload)

L'action addTable n'étant pas appelée directement, voici l'équivalent idiomatique en CASL via l'instruction UPLOAD qui sollicitera addTable en arrière-plan avec les options par défaut.

1PROC CAS;
2 upload DATA=work.mes_donnees casOut={name='mes_donnees_cas', caslib='casuser', replace=true};
3RUN;
4QUIT;
Résultat Attendu :
La table 'mes_donnees_cas' est chargée en mémoire dans la bibliothèque 'casuser' par un flux réseau (client vers serveur).
Chargement optimisé (simulant addTable en coulisses)

Lors de l'utilisation de l'instruction UPLOAD, on peut passer de nombreuses options qui correspondent aux paramètres de addTable, comme compress, promote, ou les options de partitionnement.

1PROC CAS;
2 upload DATA=work.mes_donnees
3 casOut={
4 name='mes_donnees_cas_optimise',
5 caslib='casuser',
6 replace=true,
7 compress=true,
8 promote=true,
9 replication=1 /* correspond conceptuellement au paramètre copies */
10 };
11RUN;
12QUIT;
Résultat Attendu :
La table est transférée du client vers le serveur CAS (en utilisant l'action addTable implicitement), compressée en mémoire, dupliquée pour la tolérance aux pannes, et promue avec une portée globale.