Publicado el :
ETL CREATION_INTERNE

Operaciones MERGE con opción IN=

Este código también está disponible en: Deutsch English Français
En espera de validación
El script comienza creando dos conjuntos de datos temporales, 'empsau' (empleados) y 'phonec' (teléfonos), a través de bloques DATA STEP utilizando DATALINES. Luego, se ejecutan varios bloques DATA STEP para demostrar escenarios de fusión: una fusión completa (equivalente a un full outer join), una fusión para conservar solo los registros coincidentes (equivalente a un inner join), y finalmente fusiones para aislar los registros presentes únicamente en el primer conjunto de datos, únicamente en el segundo, o en ninguno de los dos. Cada operación de fusión es seguida por una PROC PRINT para mostrar el resultado.
Análisis de datos

Type : CREATION_INTERNE


Los datos 'empsau' y 'phonec' se crean directamente en el script a través de bloques DATA STEP y la instrucción DATALINES. Luego se utilizan y transforman dentro del mismo script.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea el conjunto de datos temporal 'empsau' que contiene información sobre los empleados (Nombre, Género, ID Empleado). Los datos se proporcionan directamente en el script a través de la instrucción DATALINES.
¡Copiado!
1DATA empsau;
2 INPUT First $ Gender $ EmpID;
3 DATALINES;
4Togar M 121150
5Kylie F 121151
6Birin M 121152
7;
2 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea el conjunto de datos temporal 'phonec' que contiene los números de teléfono asociados a los ID de Empleado. Los datos también se integran directamente en el script a través de DATALINES.
¡Copiado!
1DATA phonec;
2 INPUT EmpID Phone $15.;
3 DATALINES;
4121150 +61(2)5555-1795
5121152 +61(2)5555-1667
6121153 +61(2)5555-1348
7;
3 Bloque de código
DATA STEP
Explicación :
Este bloque DATA STEP realiza una fusión completa (full outer join) de los conjuntos de datos 'empsau' y 'phonec' basada en la variable común 'EmpID'. Las opciones IN= (Emps, Cell) crean variables booleanas temporales (_Emps y _Cell) que indican si un registro proviene de 'empsau' o 'phonec' respectivamente. La PROC PRINT muestra todos los registros fusionados, incluidos los presentes en solo uno de los dos conjuntos de datos.
¡Copiado!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5RUN;
6 
7PROC PRINT DATA=empsauc;
8RUN;
4 Bloque de código
DATA STEP
Explicación :
Este bloque DATA STEP realiza una unión interna (inner join). Después de la fusión, la condición 'if Emps=1 and Cell=1;' filtra los registros para conservar solo aquellos cuyo ID de Empleado está presente tanto en 'empsau' como en 'phonec'. La PROC PRINT muestra solo las coincidencias.
¡Copiado!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=1 and Cell=1;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
5 Bloque de código
DATA STEP
Explicación :
Este bloque DATA STEP identifica los registros que están presentes en 'empsau' (Emps=1) pero ausentes de 'phonec' (Cell=0). Esto corresponde a un anti-join izquierdo. La PROC PRINT muestra los empleados sin coincidencia telefónica en 'phonec'.
¡Copiado!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=1 and Cell=0;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
6 Bloque de código
DATA STEP
Explicación :
Este bloque DATA STEP identifica los registros que están presentes en 'phonec' (Cell=1) pero ausentes de 'empsau' (Emps=0). Esto corresponde a un anti-join derecho. La PROC PRINT muestra los números de teléfono sin coincidencia de empleado en 'empsau'.
¡Copiado!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=0 and Cell=1;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
7 Bloque de código
DATA STEP
Explicación :
Este bloque DATA STEP selecciona todos los registros que no coinciden. La condición 'if Emps=0 or Cell=0;' filtra los registros que están presentes solo en 'empsau' o solo en 'phonec'. La PROC PRINT muestra los registros que no encuentran coincidencia en el otro conjunto de datos.
¡Copiado!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=0 or Cell=0;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
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.