Publié le :
Macro CREATION_INTERNE

Fonction GET (Expression Engine Language)

Ce code est également disponible en : Deutsch English Español
En attente de validation
La fonction GET est une fonction essentielle de l'Expression Engine Language (EEL), permettant d'accéder à des éléments individuels au sein d'un tableau dynamique. Les tableaux en EEL sont indexés à partir de 1. Pour utiliser cette fonction, il faut spécifier le nom du tableau dynamique et l'indice numérique de l'élément à récupérer. Elle est fondamentale pour la manipulation fine des données structurées en tableaux dans les contextes EEL, comme les étapes DATA, les procédures DS2, ou d'autres environnements de traitement de données de SAS© Viya. Une utilisation judicieuse de GET, souvent associée à la fonction DIM pour la gestion des bornes du tableau, garantit un accès sûr et efficace aux données.
Analyse des données

Type : CREATION_INTERNE


Les exemples fournis utilisent des tableaux EEL déclarés et initialisés en interne, ou des données générées via des `datalines` dans des étapes DATA ou DS2. Cela garantit l'autonomie et l'exécutabilité des exemples sans dépendance à des sources de données externes.

1 Bloc de code
DATA STEP Data
Explication :
Cet exemple simple déclare un tableau dynamique EEL 'myArray' de type chaîne avec trois éléments. La fonction GET est ensuite utilisée avec l'indice 2 pour récupérer le deuxième élément ('Banana'), qui est ensuite affiché dans le log SAS.
Copié !
1DATA _null_;
2 /* Déclaration d'un tableau dynamique EEL */
3 LENGTH myArray{3} $20;
4 myArray[1] = "Apple";
5 myArray[2] = "Banana";
6 myArray[3] = "Cherry";
7 
8 /* Utilisation de la fonction GET pour récupérer un élément */
9 myElement = GET(myArray, 2);
10 put "L'élément à l'indice 2 est : " myElement; /* Attendu : Banana */
11RUN;
2 Bloc de code
DATA STEP Data
Explication :
Cet exemple illustre une utilisation courante de la fonction GET dans une boucle. Il montre comment itérer sur un tableau dynamique en utilisant la fonction DIM pour déterminer sa taille, et comment GET permet d'accéder à chaque élément successivement. Un redimensionnement du tableau est inclus pour démontrer sa flexibilité.
Copié !
1DATA _null_;
2 /* Déclaration et initialisation d'un tableau dynamique EEL */
3 LENGTH salesData{*} 8;
4 salesData[1] = 100;
5 salesData[2] = 150;
6 salesData[3] = 200;
7 salesData[4] = 120;
8
9 /* Redimensionner le tableau pour ajouter un élément */
10 DIM(salesData) = 5;
11 salesData[5] = 180;
12 
13 /* Itérer et afficher tous les éléments du tableau */
14 DO i = 1 to DIM(salesData);
15 currentSale = GET(salesData, i);
16 put "Vente pour l'indice " i " : " currentSale;
17 END;
18RUN;
3 Bloc de code
DATA STEP Data
Explication :
Cet exemple avancé illustre comment la fonction GET peut être utilisée pour simuler l'accès à des éléments dans un tableau bidimensionnel stocké sous forme de tableau unidimensionnel. Un calcul d'indice est effectué pour mapper les coordonnées 2D à un indice 1D, et des vérifications de limites sont incluses pour une robustesse accrue. La deuxième partie de l'exemple montre comment récupérer et afficher une ligne entière de ce tableau simulé.
Copié !
1DATA _null_;
2 /* Déclaration d'un tableau dynamique EEL pour simuler une matrice 2x3 */
3 /* Les éléments sont stockés séquentiellement: (1,1) (1,2) (1,3) (2,1) (2,2) (2,3) */
4 LENGTH matrixData{6} 8;
5 matrixData[1] = 11; matrixData[2] = 12; matrixData[3] = 13;
6 matrixData[4] = 21; matrixData[5] = 22; matrixData[6] = 23;
7 
8 numRows = 2;
9 numCols = 3;
10 
11 /* Récupérer un élément spécifique (par exemple, élément à la ligne 2, colonne 1) */
12 targetRow = 2;
13 targetCol = 1;
14 calculatedIndex = ((targetRow - 1) * numCols) + targetCol;
15
16 IF (calculatedIndex >= 1 and calculatedIndex <= DIM(matrixData)) THEN DO;
17 element = GET(matrixData, calculatedIndex);
18 put "Élément à la ligne " targetRow ", colonne " targetCol " : " element; /* Attendu : 21 */
19 END;
20 ELSE DO;
21 put "Index hors limites pour la matrice.";
22 END;
23 
24 /* Récupérer et afficher tous les éléments de la deuxième ligne */
25 put ' ';
26 put 'Éléments de la deuxième ligne :';
27 DO j = 1 to numCols;
28 calculatedIndex_row2 = ((2 - 1) * numCols) + j;
29 element_row2 = GET(matrixData, calculatedIndex_row2);
30 put " Élément (2," j ") : " element_row2;
31 END;
32RUN;
4 Bloc de code
PROC CAS / DS2 Data
Explication :
Cet exemple illustre l'utilisation de la fonction GET dans un environnement SAS Viya avec CAS (Cloud Analytic Services). Un bloc DS2 est employé pour traiter une table CAS chargée en mémoire. À l'intérieur du programme DS2, un tableau dynamique EEL est déclaré et alimenté avec des données provenant des colonnes de la table d'entrée. La fonction GET est ensuite appliquée pour extraire un élément spécifique du tableau EEL, et le résultat est enregistré dans une nouvelle table CAS. Le flag 'cas' est défini à 1 pour indiquer l'utilisation de fonctionnalités CAS.
Copié !
1/* Exemple 4 : Intégration Viya/CAS avec DS2 */
2/* Création d'une table CAS en mémoire pour démonstration */
3DATA casuser.input_data;
4 INPUT id $ item1 $ item2 $ item3 $;
5 DATALINES;
6 101 Apple Banana Cherry
7 102 Orange Grape Kiwi
8 103 Mango Peach
9 ;
10RUN;
11 
12PROC CAS;
13 SESSION casauto;
14 
15 /* Charger la table dans CAS */
16 load DATA=casuser.input_data out=casuser.input_data;
17 
18 /* Utiliser un bloc DS2 pour créer un tableau EEL et utiliser la fonction GET */
19 ds2;
20 DATA casuser.processed_items {overwrite=true};
21 method RUN();
22 SET casuser.input_data;
23 declare character(20) fruitArray[3] _temporary_; /* Déclaration d'un tableau EEL temporaire */
24 declare character(20) secondFruit;
25 
26 /* Peupler le tableau EEL avec les valeurs des colonnes */
27 fruitArray[1] = item1;
28 fruitArray[2] = item2;
29 fruitArray[3] = item3;
30 
31 /* Utiliser la fonction GET pour récupérer le deuxième fruit */
32 IF DIM(fruitArray) >= 2 THEN DO;
33 secondFruit = GET(fruitArray, 2);
34 END;
35 ELSE DO;
36 secondFruit = 'N/A';
37 END;
38 
39 OUTPUT;
40 END;
41 enddata;
42 QUIT;
43 
44 /* Afficher la table résultante */
45 PRINT DATA=casuser.processed_items;
46QUIT;
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