Una creencia común es que la instrucción MERGE del paso DATA es el equivalente exacto de una unión SQL (LEFT JOIN o FULL JOIN). Si bien esto es cierto para relaciones simples (1 a 1 o 1 a N), es totalmente falso para relaciones de tipo "Many-to-Many" (N a N).
La observación: Resultados divergentes
Tomemos un ejemplo simple donde la clave de unión (ID) aparece varias veces en ambas tablas:
Tabla 1: El ID 23456 aparece 2 veces.
Tabla 2: El ID 23456 aparece 2 veces.
Si buscamos combinar estos datos, matemáticamente esperamos obtener $2 \times 2 = 4$ líneas (el producto cartesiano para este ID).
Note : El enfoque PROC SQL (Producto Cartesiano)
SQL funciona con una lógica de conjuntos (álgebra relacional). Combina cada fila de la tabla A con cada fila correspondiente de la tabla B.
PROC SQL;
SELECT * FROM dataset1 t1
LEFT JOIN dataset2 t2 ON t1.ID = t2.ID;
QUIT;
1
PROC SQL;
2
SELECT * FROM dataset1 t1
3
LEFT JOIN dataset2 t2 ON t1.ID = t2.ID;
4
QUIT;
Resultado: 4 filas para el ID 23456. Se crean todas las combinaciones posibles. Este es el comportamiento estándar de una base de datos relacional.
Note : El enfoque DATA MERGE (Yuxtaposición secuencial)
El paso DATA funciona fila por fila de manera secuencial. Coloca los punteros de lectura "uno al lado del otro".
Use PROC SQL si necesita un producto cartesiano (relación N a N), es decir, cruzar todas las ocurrencias posibles. Este es a menudo el resultado esperado para análisis cruzados.
Use DATA MERGE para relaciones 1 a 1 o 1 a N (tipo "Look-up" / Enriquecimiento de datos). Es mucho más eficiente en términos de tiempo de cálculo para grandes volúmenes, siempre que las claves sean únicas en al menos una de las dos tablas.
Nota técnica: Es técnicamente posible simular un producto cartesiano con un paso DATA (usando dos instrucciones SET y bucles explícitos), pero el código se vuelve innecesariamente complejo. En este caso preciso, la claridad de SQL es inmejorable.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.