Consulta SORT JOIN

Todo lo relacionado con JCL, manejo de jobs, etc.
Responder
qwe2
Usuario avanzado
Usuario avanzado
Mensajes: 60
Registrado: 21 Ene 2015, 16:13
País: Argentina
Ciudad: CABA
Ocupación: Analista de desarrollo

Consulta SORT JOIN

Mensaje por qwe2 » 14 Nov 2017, 11:39

Buen dia, estoy teniendo un problema que me tiene perdido.
Hago un sort con JOINKEYS y me quedo solamente con lo matchea y sin embargo, el archivo de salida termina saliendo con casi el doble de informacion de la que tiene el fichero1 y el 2. Busco la clave de uno de los registros en ambos archivos y tengo 6 de cada lado. En la salida tengo 36 registros. Es normal esto? o algo estoy haciendo mal? Yo me quiero quedar con los 6 registros que estan en el archivo 2 pero con el formato del archivo 1? se entiende o hace falta que ponga algun ejemplo?
Gracias de ante mano.
:sombrero:

juan
Usuario
Usuario
Mensajes: 8
Registrado: 08 Jul 2011, 06:49
País: ESPAÑA
Ciudad: Madrid
Ocupación: Otra

Re: Consulta SORT JOIN

Mensaje por juan » 11 Dic 2017, 02:21

Me temo que el contenido de las claves que estas utilizando de cruce (matching) son las mismas. Por eso en salida te quedan 36 registros teniendo de entrada 6 y 6.
JOINKEYS, si no indicas nada, realiza un cruce m..n, es decir, por cada registro en F1, grabara en salida todos los que coincida su clave de F2.
Revisa la clave de matching de ambos ficheros para que sea única.

ricamin
Usuario
Usuario
Mensajes: 4
Registrado: 04 Feb 2016, 07:11
País: España
Ciudad: Madrid
Ocupación: Programador

Re: Consulta SORT JOIN

Mensaje por ricamin » 23 Mar 2018, 13:06

Buenas. A ver si esto te puede ayudar.

Lo que creo que te esta pasando es un problema de cardinalidad ya que la clave de macheo del JOINKEYS nos es única, teniendo para la misma clave varios registros como comenta Juan. Esto te esta produciendo que salgan duplicados, ya que realiza un macheo varios a varios.

Lo que entiendo que deseas hacer es sacar aquellos registros del fichero1 cuya clave se encuentre en el fichero2 pero sin que se dupliquen. La solución es eliminar los duplicados del fichero2 para que el macheo sea varios a 1.

Ejemplo:

FICHERO1
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC

FICHERO2
111111
111111
111111
111111
111111
111111
333333
333333
333333
333333
333333
333333

La salida que deseas entiendo que es:
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC

Para hacer esto te sirve el siguiente joinkeys que elimina duplicados del fichero2 de la clave que macheas:

//STEP000 EXEC PGM=SORT
//SORTJNF1 DD *
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
111111AAAAAA
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
222222BBBBBB
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
333333CCCCCC
/*
//SORTJNF2 DD *
111111
111111
111111
111111
111111
111111
333333
333333
333333
333333
333333
333333
/*
//JNF2CNTL DD *
SUM FIELDS=NONE
/*

//SORTOUT DD DSN=DESA.FICHERO.SALIDA,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(10,10),RLSE),
// RECFM=FB,LRECL=12
//SYSOUT DD SYSOUT=*
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(1,6,A)
JOINKEYS FILE=F2,FIELDS=(1,6,A)
REFORMAT FIELDS=(F1:1,12)
SORT FIELDS=COPY
/*

Avatar de Usuario
Horacio Villa
Colaborador
Colaborador
Mensajes: 185
Registrado: 04 Dic 2003, 13:11
País: Argentina
Ciudad: Buenos Aires
Ocupación: DBA

Re: Consulta SORT JOIN

Mensaje por Horacio Villa » 19 May 2018, 16:05

La performance de ese SORT es horrible. NO quiero imaginar lo que tardaría si los archivos tuvieran un tamaño mas parecido a lo que puede ser una tarea en producción.
HV

Responder