Publicado el :
Manipulación de Datos CREATION_INTERNE

Fusionar datos con una tabla hash

Este código también está disponible en: Deutsch English Français
En espera de validación
Una tabla hash de SAS© contiene filas (entradas hash) y columnas (variables hash). Cada entrada hash debe tener al menos una columna clave y una columna de datos. Los valores pueden estar codificados o cargarse desde un conjunto de datos SAS©. Una tabla hash reside completamente en memoria, lo que hace que sus operaciones sean rápidas. Los datos no necesitan estar preordenados. Una tabla hash es temporal: una vez que finaliza el paso DATA, deja de existir. Sin embargo, su contenido se puede guardar en un conjunto de datos SAS© o en una base de datos externa. El objeto hash se dimensiona dinámicamente.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (paso DATA con DATALINES) para simular las tablas `product_list` y `supplier`.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque de código DATA step crea el conjunto de datos `work.product_list` utilizando datos en línea (DATALINES). Define las variables `Product_Id`, `Product_Name` y `Supplier_ID` con sus tipos y longitudes respectivas. Los espacios y caracteres especiales en `Product_Name` han sido reemplazados por guiones bajos para una mejor gestión a través de DATALINES.
¡Copiado!
1DATA work.product_list;
2 LENGTH Product_Id $10 Product_Name $40 Supplier_ID 8;
3 INPUT Product_Id $ Product_Name :$40. Supplier_ID;
4 DATALINES;
5240200100101 Grandslam_Staff_Tour_Mhl_Golf_Gloves 3808
6210200100017 Sweatshirt_Children's_O-Neck 3298
7240400200022 Aftm_95_Vf_Long_Bg-65_White 1280
8230100100017 Men's_Jacket_Rem 50
9210200300006 Fleece_Cuff_Pant_Kid'S 1303
10210200500002 Children's_Mitten 772
11210200700016 Strap_Pants_BBO 798
12210201000050 Kid_Children's_T-Shirt 2963
13210200100009 Kids_Sweat_Round_Neck,Large_Logo 3298
14210201000067 Logo_Coord.Children's_Sweatshirt 2963
15220100100019 Fit_Racing_Cap 1303
16220100100025 Knit_Hat 1303
17220100300001 Fleece_Jacket_Compass 772
18220200200036 Soft_Astro_Men's_Running_Shoes 1747
19230100100015 Men's_Jacket_Caians 50
20230100500004 Backpack_Flag,_6,5x9_Cm. 316
21210200500006 Rain_Suit,_Plain_w/backpack_Jacket 772
22230100500006 Collapsible_Water_Can 316
23224040020000 Bat_5-Ply 3808
24220200200035 Soft_Alta_Plus_Women's_Indoor_Shoes 1747
25240400200066 Memhis_350,Yellow_Medium,_6-pack 1280
26240200100081 Extreme_Distance_90_3-pack 3808
27;
28RUN;
2 Bloque de código
DATA STEP Data
Explicación :
Este bloque de código DATA step crea el conjunto de datos `work.supplier` utilizando datos en línea (DATALINES). Define las variables `Supplier_ID`, `Supplier_Name`, `Supplier_Address` y `Country` con sus tipos y longitudes respectivas. Los espacios y caracteres especiales han sido reemplazados por guiones bajos para una mejor gestión a través de DATALINES.
¡Copiado!
1DATA work.supplier;
2 LENGTH Supplier_ID 8 Supplier_Name $40 Supplier_Address $45 Country $2;
3 INPUT Supplier_ID Supplier_Name :$40. Supplier_Address :$45. Country $;
4 DATALINES;
550 Scandinavian_Clothing_A/S Kr._Augusts_Gate_13 NO
6316 Prime_Sports_Ltd 9_Carlisle_Place GB
7755 Top_Sports Jernbanegade_45 DK
8772 AllSeasons_Outdoor_Clothing 553_Cliffview_Dr US
9798 Sportico C._Barquillo_1 ES
101280 British_Sports_Ltd 85_Station_Street GB
111303 Eclipse_Inc 1218_Carriole_Ct US
121684 Magnifico_Sports Rua_Costa_Pinto_2 PT
131747 Pro_Sportswear_Inc 2434_Edgebrook_Dr US
143298 A_Team_Sports 2687_Julie_Ann_Ct US
153808 Carolina_Sports 3860_Grand_Ave US
16;
17RUN;
3 Bloque de código
DATA STEP / PROC PRINT
Explicación :
1. Incluye una instrucción LENGTH para asegurarse de que las variables `Supplier_Name`, `Supplier_Address` y `Country` estén definidas en el PDV (Program Data Vector).
2. Durante la primera iteración del paso DATA, declara el objeto hash `S`. Asigna `Supplier_ID` como clave del objeto hash. Incluye los valores de `Supplier_Name`, `Supplier_Address` y `Country` del conjunto de datos `work.supplier`.
3. Dado que `Supplier_Name`, `Supplier_Address` y `Country` no se asignan explícitamente a valores iniciales, SAS escribe una NOTA en el registro indicando que las variables no están inicializadas. `CALL MISSING` suprime esta NOTA.
4. Lee una observación del conjunto de datos `product_list`.
5. Se llama al método `FIND` para verificar si el `Supplier_ID` de `product_list` coincide con la clave `Supplier_ID` de alguna de las entradas del objeto hash. Si hay una coincidencia (`rc=0`), la observación se escribe en el conjunto de datos `supplier_info`.
El PROC PRINT muestra a continuación el contenido del conjunto de datos `supplier_info`.
¡Copiado!
1DATA supplier_info;
2 drop rc;
3 LENGTH Supplier_Name $40 Supplier_Address $ 45 Country $ 2; /* 1*/
4 IF _N_=1 THEN DO;
5 declare hash S(dataset:'work.supplier'); /* 2*/
6 S.definekey('Supplier_ID');
7 S.definedata('Supplier_Name',
8 'Supplier_Address','Country');
9 S.definedone();
10 call missing(Supplier_Name,
11 Supplier_Address,Country); /* 3*/
12 END;
13 SET work.product_list; /* 4*/
14 rc=S.find(); /* 5*/
15RUN;
16PROC PRINT DATA=supplier_info;
17 var Product_ID Supplier_ID Supplier_Name
18 Supplier_Address Country;
19 title "Product Information";
20RUN;
21title;
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