Veröffentlicht am :
Makro CREATION_INTERNE

GET-Funktion (Expression Engine Language)

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die GET-Funktion ist eine wesentliche Funktion der Expression Engine Language (EEL), die den Zugriff auf einzelne Elemente innerhalb eines dynamischen Arrays ermöglicht. Arrays in EEL sind ab 1 indiziert. Um diese Funktion zu verwenden, müssen der Name des dynamischen Arrays und der numerische Index des abzurufenden Elements angegeben werden. Sie ist grundlegend für die präzise Manipulation von in Arrays strukturierten Daten in EEL-Kontexten, wie DATA-Schritten, DS2-Prozeduren oder anderen Datenverarbeitungsumgebungen von SAS© Viya. Eine sorgfältige Verwendung von GET, oft in Verbindung mit der DIM-Funktion zur Verwaltung der Array-Grenzen, gewährleistet einen sicheren und effizienten Datenzugriff.
Datenanalyse

Type : CREATION_INTERNE


Die bereitgestellten Beispiele verwenden intern deklarierte und initialisierte EEL-Arrays oder Daten, die über `datalines` in DATA- oder DS2-Schritten generiert wurden. Dies gewährleistet die Autonomie und Ausführbarkeit der Beispiele ohne Abhängigkeit von externen Datenquellen.

1 Codeblock
DATA STEP Data
Erklärung :
Dieses einfache Beispiel deklariert ein dynamisches EEL-Array 'myArray' vom Typ Zeichenkette mit drei Elementen. Die GET-Funktion wird dann mit dem Index 2 verwendet, um das zweite Element ('Banana') abzurufen, das anschließend im SAS-Log angezeigt wird.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel veranschaulicht eine häufige Verwendung der GET-Funktion in einer Schleife. Es zeigt, wie man ein dynamisches Array durchläuft, indem man die DIM-Funktion zur Bestimmung seiner Größe verwendet, und wie GET den sukzessiven Zugriff auf jedes Element ermöglicht. Eine Größenänderung des Arrays ist enthalten, um seine Flexibilität zu demonstrieren.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Dieses erweiterte Beispiel zeigt, wie die GET-Funktion verwendet werden kann, um den Zugriff auf Elemente in einem zweidimensionalen Array zu simulieren, das als eindimensionales Array gespeichert ist. Eine Indexberechnung wird durchgeführt, um 2D-Koordinaten einem 1D-Index zuzuordnen, und Grenzprüfungen sind für erhöhte Robustheit enthalten. Der zweite Teil des Beispiels zeigt, wie eine ganze Zeile dieses simulierten Arrays abgerufen und angezeigt wird.
Kopiert!
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 Codeblock
PROC CAS / DS2 Data
Erklärung :
Dieses Beispiel veranschaulicht die Verwendung der GET-Funktion in einer SAS Viya-Umgebung mit CAS (Cloud Analytic Services). Ein DS2-Block wird verwendet, um eine in den Speicher geladene CAS-Tabelle zu verarbeiten. Innerhalb des DS2-Programms wird ein dynamisches EEL-Array deklariert und mit Daten aus den Spalten der Eingabetabelle gefüllt. Die GET-Funktion wird dann angewendet, um ein bestimmtes Element aus dem EEL-Array zu extrahieren, und das Ergebnis wird in einer neuen CAS-Tabelle gespeichert. Das Flag 'cas' ist auf 1 gesetzt, um die Verwendung von CAS-Funktionen anzuzeigen.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved