Publié le :
CASL CREATION_INTERNE

Coercition de Paramètres

Ce code est également disponible en : Deutsch English Español
En attente de validation
Dans l'environnement SAS© Viya 4 et CASL, la coercition de paramètres permet aux utilisateurs de simplifier la syntaxe des appels d'actions CAS. Pour les paramètres définis comme des listes ou des tableaux (arrays), si un paramètre désigné (souvent 'name') est le seul élément que l'utilisateur souhaite spécifier, les accolades ou la structure complète peuvent être omises. Le serveur CAS convertit alors automatiquement la valeur fournie pour correspondre au paramètre désigné. Cela rend le code plus concis et plus lisible. Cette documentation présente des exemples pour les listes de paramètres et les tableaux de paramètres, illustrant comment cette fonctionnalité améliore l'efficacité de la programmation.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données SASHELP (iris) et des créations de tables internes via DATA step, chargées en mémoire CAS.

1 Bloc de code
PROC CAS / simple.summary
Explication :
Cet exemple démontre la coercition de paramètre la plus simple pour une liste de paramètres. Le paramètre `table=` attend normalement une liste avec des options comme `name=`. Ici, 'iris' est directement fourni en tant que chaîne, et le serveur CAS l'interprète comme la valeur du paramètre `name` par défaut. Cela simplifie la syntaxe en omettant les accolades et la clé 'name='. La `caslib` est spécifiée pour garantir l'emplacement de la table 'iris'.
Copié !
1PROC CAS;
2 SESSION casauto;
3 
4 /* Utilisation avec coercition: 'iris' est coercé en name="iris" */
5 /* La caslib SASHELP est généralement accessible par défaut. */
6 SIMPLE.summary / TABLE="iris", caslib="SASHELP";
7RUN;
8QUIT;
2 Bloc de code
PROC CAS / dataPreprocess.binning Data
Explication :
Cet exemple illustre la coercition pour un tableau de paramètres, tel que le paramètre `inputs` de l'action `binning`. Au lieu de spécifier `inputs={{name="SepalLength"}, {name="PetalLength"}}`, nous pouvons directement lister les noms des variables dans un tableau de chaînes (`{"SepalLength", "PetalLength"}`). Le serveur CAS interprète chaque chaîne comme la valeur du paramètre `name` pour chaque élément du tableau. Ceci rend le code plus concis et lisible. La table `iris` est chargée dans `casuser` pour garantir l'autonomie de l'exemple.
Copié !
1PROC CAS;
2 SESSION casauto;
3 /* S'assurer que la caslib 'casuser' existe et est active */
4 caslib _all_ assign;
5 
6 /* Charger la table iris dans la caslib 'casuser' pour l'exemple */
7 PROC CASUTIL;
8 load casdata="iris" incaslib="SASHELP" outcaslib="casuser" replace;
9 RUN;
10
11 /* Utilisation avec coercition pour le tableau 'inputs' */
12 dataPreprocess.binning /
13 TABLE="iris",
14 caslib="casuser",
15 inputs={"SepalLength", "PetalLength"};
16 
17 /* Nettoyage: suppression de la table temporaire */
18 TABLE.dropTable / name="iris", caslib="casuser";
19RUN;
20QUIT;
3 Bloc de code
PROC CAS / regression.logistic Data
Explication :
Cet exemple avancé montre comment combiner des paramètres coercés avec des spécifications complètes au sein d'un même tableau, en utilisant le paramètre `class=` souvent présent dans les actions statistiques (ici, `regression.logistic`). Pour la variable 'var1', seule la chaîne est fournie (`"var1"`), s'appuyant sur la coercition pour `name="var1"`. Pour 'var2', une spécification complète est utilisée (`{name="var2", order="FORMATTED"}`) pour inclure une option `order`. Cela illustre la flexibilité d'utiliser la forme la plus simple lorsque c'est possible et la forme complète lorsque des options supplémentaires sont nécessaires.
Copié !
1PROC CAS;
2 SESSION casauto;
3 caslib _all_ assign;
4 
5 /* Création d'une table d'exemple en mémoire CAS */
6 DATA casuser.mydata;
7 INPUT var1 $ var2 var3;
8 DATALINES;
9 A 10 1
10 B 20 0
11 A 15 1
12 C 25 0
13 B 12 1
14 D 30 1
15 ;
16 RUN;
17
18 /* Exemple d'action utilisant le paramètre 'class' avec coercition partielle */
19 /* Charger l'actionSet 'regression' si ce n'est pas déjà fait */
20 BUILTINS.LOADACTIONSET / actionSet="regression";
21
22 regression.logistic /
23 TABLE={name="mydata", caslib="casuser"},
24 model={target="var3"},
25 inputs="var2",
26 class={
27 "var1", /* Coercition pour name="var1" */
28 {name="var2", order="FORMATTED"} /* Spécification complète pour var2 avec option */
29 };
30
31 /* Nettoyage de la table */
32 TABLE.dropTable / name="mydata", caslib="casuser";
33RUN;
34QUIT;
4 Bloc de code
PROC CAS / table.loadtable Data
Explication :
Cet exemple démontre la coercition lors du chargement d'une table dans CAS. D'abord, une table SAS locale (`work.local_data`) est créée. Ensuite, l'action `table.loadtable` est utilisée pour charger cette table dans la mémoire CAS. Ici, la valeur de `path` (`"work.local_data"`) est directement fournie, le serveur CAS la coercant pour désigner la source. De même, le paramètre `target` est simplifié à `"my_loaded_table"`, le serveur l'interprétant comme `name="my_loaded_table"`. L'utilisation de `caslib="casuser"` explicitement dans l'action montre comment cibler une bibliothèque spécifique.
Copié !
1PROC CAS;
2 SESSION casauto;
3 
4 /* S'assurer que la caslib 'casuser' existe et est active */
5 caslib _all_ assign;
6
7 /* Créer une table SAS locale pour l'exemple */
8 DATA work.local_data;
9 INPUT id name $;
10 DATALINES;
11 1 Alpha
12 2 Beta
13 3 Gamma
14 ;
15 RUN;
16 
17 /* Charger la table locale 'local_data' dans la caslib 'casuser' de CAS */
18 /* 'path' est coercé, 'target' est coercé */
19 TABLE.loadtable /
20 caslib="casuser",
21 path="work.local_data",
22 promote=TRUE,
23 target="my_loaded_table";
24 
25 /* Afficher les informations de la table chargée */
26 TABLE.tableInfo / name="my_loaded_table", caslib="casuser";
27
28 /* Nettoyage : supprimer la table chargée de CAS */
29 TABLE.dropTable / name="my_loaded_table", caslib="casuser";
30 
31 /* Nettoyage : supprimer la table de travail SAS locale */
32 PROC DATASETS lib=work nolist;
33 delete local_data;
34 RUN; QUIT;
35 
36RUN;
37QUIT;
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved.