BookmarkSubscribeRSS Feed
Tip Semanal: Merge o Join, ¿Cuál usar?
Berenice25
SAS Employee

SAS tiene una gran flexibilidad en cómo unir dos o más tablas. Es posible utilizar tanto el comando Merge, nativo del lenguaje SAS, como el comando Join en lenguaje SQL, a través de PROC SQL.

 

Cada uno de estos comandos tiene sus peculiaridades, ventajas y desventajas. Mostramos a continuación una tabla con un resumen de las principales diferencias encontradas en estos dos tipos de comandos, que pueden ayudarte a la hora de decidir cuál usar:

 

  Tema

Merge

SQL Inner Join

Números/tamaño del conjunto de datos

No hay límite en el número o tamaño de las tablas que se unirán, a excepción del espacio en disco

Número máximo de tablas en Join: 256 (SAS 9.4)

Procesamiento de datos

Secuencialmente, se unirán una a una las observaciones con valores repetidos en la(s) variable(s) definida(s) en el BY. (Sin duplicar registros)

Genera producto cartesiano para observaciones con valores repetidos en la(s) variable(s) definida(s) en el BY.

Guardar Datasets

Posibilidad de crear múltiples Datasets con un solo paso data.

Solo se puede crear un datasets por query.

 Datasets ordenados/indexados

Requiere que los datasets de origen estén ordenados.

No es necesario ordenar los datasets de origen.

Variables con el mismo nombre

La variable contenida en BY debe tener el mismo nombre en todos los conjuntos de datos de origen.

Las variables clave en join no necesitan tener el mismo nombre.

 

 

Paso Data – Merge - Ejemplo: 
DATA ALL;
   MERGE CAFE(IN=CAFEIN) SNACK(IN=SNACKIN) VENDING(IN=VENDIN);
   BY NAME;
   CIN=CAFEIN; SIN=SNACKIN; VIN=VENDIN;
RUN;
PROC SQL – JOIN: Ejemplo:
proc sql; 
title 'All Flights for Each Supervisor';
 select s.IdNum, Lname, City 'Hometown', Jobcat, Flight, Date 
      from proclib.schedule2 s, proclib.staff2 t, proclib.superv2 v 
     where s.idnum=t.idnum and t.idnum=v.supid;

 

2 Comments
Fibaa
Calcite | Level 5

Creo que no es cierto que "La variable contenida en BY debe tener el mismo nombre en todos los conjuntos de datos de origen".

Tengo entendido que se puede usar 'rename'

wilkoba
SAS Employee

Hola @Fibaa , es correcto su afirmación.

 

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Article Labels
Article Tags
Contributors