Publicado el :
Macro CREATION_INTERNE

Función GET (Expression Engine Language)

Este código también está disponible en: Deutsch English Français
En espera de validación
La función GET es una función esencial de Expression Engine Language (EEL), que permite acceder a elementos individuales dentro de una matriz dinámica. Las matrices en EEL se indexan a partir de 1. Para usar esta función, se debe especificar el nombre de la matriz dinámica y el índice numérico del elemento a recuperar. Es fundamental para la manipulación fina de datos estructurados en matrices en contextos EEL, como los pasos DATA, los procedimientos DS2 u otros entornos de procesamiento de datos de SAS© Viya. Un uso juicioso de GET, a menudo asociado con la función DIM para la gestión de los límites de la matriz, garantiza un acceso seguro y eficiente a los datos.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos proporcionados utilizan matrices EEL declaradas e inicializadas internamente, o datos generados a través de `datalines` en pasos DATA o DS2. Esto garantiza la autonomía y la capacidad de ejecución de los ejemplos sin dependencia de fuentes de datos externas.

1 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo simple declara una matriz dinámica EEL 'myArray' de tipo cadena con tres elementos. La función GET se utiliza luego con el índice 2 para recuperar el segundo elemento ('Banana'), que luego se muestra en el log de SAS.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo ilustra un uso común de la función GET en un bucle. Muestra cómo iterar sobre una matriz dinámica usando la función DIM para determinar su tamaño, y cómo GET permite acceder a cada elemento sucesivamente. Se incluye un redimensionamiento de la matriz para demostrar su flexibilidad.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo avanzado ilustra cómo la función GET se puede usar para simular el acceso a elementos en una matriz bidimensional almacenada como una matriz unidimensional. Se realiza un cálculo de índice para mapear las coordenadas 2D a un índice 1D, y se incluyen comprobaciones de límites para una mayor robustez. La segunda parte del ejemplo muestra cómo recuperar y mostrar una fila completa de esta matriz simulada.
¡Copiado!
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 Bloque de código
PROC CAS / DS2 Data
Explicación :
Este ejemplo ilustra el uso de la función GET en un entorno SAS Viya con CAS (Cloud Analytic Services). Se emplea un bloque DS2 para procesar una tabla CAS cargada en memoria. Dentro del programa DS2, se declara una matriz dinámica EEL y se alimenta con datos provenientes de las columnas de la tabla de entrada. La función GET se aplica luego para extraer un elemento específico de la matriz EEL, y el resultado se registra en una nueva tabla CAS. El flag 'cas' se establece en 1 para indicar el uso de funcionalidades CAS.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved