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.

 

 

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Article Labels
Article Tags
Contributors