Error al migrar equivalencias - post contorles

Podras enviarnos esa base anonimizada?

Hola Alejandro
No estoy pudiendo anonimizar la base…

bin/guarani backup_anonimizado -t Ejecutado: 24/06/22 08:54:20 Exportando la base anonimizada Ejecutando: pg_dump -O -n negocio -h postgres -U postgres -p 5432 guarani3 | /usr/local/app/BD/Anonimizacion/bin/mask >> /usr/local/app/BD/tmp/backup_anonimizado_3.20.0.sql sh: /usr/local/app/BD/Anonimizacion/bin/mask: not found Password: pg_dump: error: could not write to output file: Broken pipe

Alguna idea?
Gracias!!

Iris

Quizas siga estando mal el conteo de actividades extracurriculares otrogadas a los alumnos en G2.
¿Que devuelven estas 3 querys?


1)
SELECT COUNT(*)
   FROM  mig.sga_resol_activ
   JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND 
                                 mig.sga_alumnos_resol.resol_actividades = mig.sga_resol_activ.resol_actividades 
JOIN mig.sga_activ_alumno ON 	 mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND 
                                 mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND
                                 mig.sga_alumnos_resol.carrera = mig.sga_activ_alumno.carrera AND
                                 mig.sga_alumnos_resol.legajo  = mig.sga_activ_alumno.legajo  							
								
2)
 /*
 modalidad = G (Grupal)    : sga_resol_activ > 1 sga_activ_resol  > N sga_activ_alumno  > N sga_alumnos_resol
             Una actividad y N alumnos en la resolucion
 */
SELECT COUNT(*)
   FROM  mig.sga_resol_activ

   JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND 
                               mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades

   JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND 
                                 mig.sga_alumnos_resol.resol_actividades = mig.sga_resol_activ.resol_actividades 

   JOIN mig.sga_activ_alumno ON  mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND 
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area				= mig.sga_activ_resol.area AND
                                 mig.sga_activ_alumno.actividad			= mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha   			= mig.sga_activ_resol.fecha AND
                                 mig.sga_activ_alumno.carrera 			= mig.sga_alumnos_resol.carrera AND
                                 mig.sga_activ_alumno.legajo  			= mig.sga_alumnos_resol.legajo  							
 WHERE mig.sga_resol_activ.modalidad = 'G'

 /*  modalidad = I (Individual): sga_resol_activ > N sga_activ_resol  > 1 sga_alumnos_resol > 1 sga_activ_alumno
             Un alumno y N actividades en la resolucion.
 */			
 SELECT COUNT(*)
   FROM mig.sga_resol_activ

   JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND 
                                   mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades 

   JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND 
                                 mig.sga_alumnos_resol.resol_actividades = mig.sga_resol_activ.resol_actividades

   JOIN mig.sga_activ_alumno ON  mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND 
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area				= mig.sga_activ_resol.area AND
                                 mig.sga_activ_alumno.actividad			= mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha   			= mig.sga_activ_resol.fecha AND
                                 mig.sga_activ_alumno.carrera 			= mig.sga_alumnos_resol.carrera AND
                                 mig.sga_activ_alumno.legajo  			= mig.sga_alumnos_resol.legajo  							
 WHERE mig.sga_resol_activ.modalidad = 'I'

2

Hola Alajenadro

La consulta 1) da este error:

ERROR: falta una entrada para la tabla «cnv_r» en la cláusula FROM

Reemplazando «mig.sga_sga_activ_resol» por «mig.sga_activ_resol» en las otras 2 consultas, las cantidades son:
2) 47787 registros
3) 38 registros

Saludos

Iris

Perdon, actualice las 3 querys. Volve a probar.

Pero viendo mensajes anteriores el problema de diferencias era sobre la tabla sga_reconocimiento (cabecera de los tramites de equivalencias relacionadas con las homologaciones de G2, no?)
Por favor volver a correr el pos-control y envia el resultado .

Hola Alejandro

Gracias.
El error está sobre la tabla sga_reconocimiento_act.
cant_g2: 47.825,00
cant_g3: 46.478,00

La ejecución de los scripts que enviaste da lo siguiente como resultado:

  1. 47825 registros
  2. 47787 registros
  3. 38 registros

Gracias

Iris

Por favor corre la funcion mig.sp_pos_ctrl_equivalencias() y enviá el resultado

Hola Alejandro

Acá va el resultado:

(sga_equiv_tramite,“OK: Cantidad de Trámites de equivalencias (sga_equiv_tramite) …”,3513,3513)
(sga_reconocimiento,“OK: Cantidad de Trámites de equivalencias de Homologaciones (sga_reconocimiento) …”,5,5)
(sga_equiv_otorgada,“OK: cantidad de equivalencias (sga_equiv_otorgada) …”,14241,14241)
(sga_reconocimiento_act,“OK: cantidad de actividades homologadas (sga_equiv_otorgada) …”,7,7)
(sga_equiv_internas,“OK: Cantidad de equiv_internas …”,5471,5471)
(sga_equiv_externas,“OK: cantidad de equiv_externas …”,358,358)
(sga_reconocimiento_act,“Error: Cantidad de reconocimiento de ACTIVIDADES EXTRACURRICULARES no coinciden (sga_activ_alumno) …”,47825,46478)

Saludos

Iris

Por favor envia el resultado de estas consultas:

1)
SELECT COUNT(*)
		  FROM mig._cnv_pk_reconocimiento as m_r
		  JOIN sga_reconocimiento as r ON r.nro_tramite = m_r.nro_tramite 
		  JOIN sga_reconocimiento_act as d ON d.nro_tramite = r.nro_tramite 
		 WHERE m_r.origen = 'EXTRACURRICULAR'; 

2)
		SELECT SUM(CASE WHEN d.homologada = 'S' THEN 1 ELSE 0 END) as cant_equiv_homologadas,
		       SUM(CASE WHEN d.homologada = 'N' THEN 1 ELSE 0 END) as cant_act_extracurriculares
		  FROM mig._cnv_pk_reconocimiento as m_r
		  JOIN sga_reconocimiento as r ON r.nro_tramite = m_r.nro_tramite 
		  JOIN sga_reconocimiento_act as d ON d.nro_tramite = r.nro_tramite ; 

3)
 		SELECT filas FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_act';

Hola Aljandro

Estos son los resultados de las query:

count
47.825

cant_equiv_homologadas|cant_act_extracurriculares
7|47.825

filas
1.347

Saludos
Iris

La diferencia que veo es lo que habia previo a la migracion, las 1347 filas de la 3er query.
Puede ser que haya quedado mal ese dato en esa tabla?
Porque el resultado de la query 1 (47825), el dato “cant_act_extracurriculares” de la query 2 y lo que se cuenta de lo que hay en la base de Guarani 2 todo coincide, son las 47825 filas.

¿Volviste a realizar una migración completa?

Hola Alejandro
Estos son los datos obtenidos de la última migración completa que hice hace unos 10 días.
Es de una base de G2, sobre una base de G3 con 3 responsables académicas ya en producción.
Puede ser que el valor de actualización de la cantidad de filas originales, no haya quedado bien actualizado entonces?
Saludos
Iris

Podrás probar una migración completa al menos hasta equivalencias y de esta forma vemos que resultado da estos controles luego de migrar el modulo de equivalencias, que incluye equivalencias de actividades que fueron homologadas y reconocimiento de actividades extracurriculares

De acuerdo Alejandro!
Ni bien logre hacerla te cuento como me va.
Igual esta base que te paso las cantidades, es en mi entorno local, que no ha tenido modificaciones luego de la migración, no creo encontrar diferencias de valores.
Saludos.
Iris

Hola Alejandro
Estoy haciendo una migración de otra base que corresponde a otra facultad (sobre una que ya cuenta con otras responsables académicas cargadas) y salta el error que envío en adjunto.
Por ahí ayuda.
Saludos.

Iris


error_postcontrol_equivalencias.png

error_postcontrol_equivalencias.png

¿Esto da 0 ?

SELECT count(*) FROM sga_equiv_otorgada;

¿Esto da 49172?

   SELECT filas FROM mig._tablas_g3 where tabla = 'sga_equiv_otorgada';

NO se que suecede, si la 1er consulta devuelve 0, significa que no hay equivalencias otorgadas, pero la 2da que es la que se ejecuta previo a la migracion da 49172, que esta sucediendo?

Hola Alejandro
Aclaración: La base que estoy migrando corresponde a otra facultad que aparentemente no tiene problemas con las extracurriculares (sobre una base de G3 ya integrada que incluye la base con las diferencias que estamos tratando de identificar).

Te respondo las cantidades que obtengo con esas consultas.

SELECT count(*) FROM sga_equiv_otorgada;

38647 registros

SELECT filas FROM mig._tablas_g3 where tabla = 'sga_equiv_otorgada';

30033 registros

Y te adjunto el postcontrol que estoy usando.

Saludos.
Iris


fx_pos_ctrl_equivalencias.sql (7.87 KB)

No es lo mismo que el pos-control que te envie.
Fijate que cambia la query en la linea 126.

    SELECT filas INTO cant_inicial FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_act_homologada';

Te envio el script que tenemos con estos cambios.


fx_pos_ctrl_equivalencias.sql (13 KB)

Hola Alejandro
Volví a hacer una nueva migración con la base que tiene problemas con las equivalencias (llamemosla D).
Y persiste el error en la misma cantidad de registros, para la misma tabla (sga_reconocimiento_act).
Envío en adjunto el resultado. Y el script que estoy usando para los postcontroles.

Aclaración: Migré la base D, sobre otra base de G3 que ya tenía las bases A+B+C.

Cuando comenté esto:

Estaba migrando la base E, sobre la base de G3 que ya tenia A+B+C+D.

Necesito poder identificar los 1349 registros que no están migrando (correspondientes a la base D), para entender qué información se está perdiendo y si es relevante o no.
Gracias por la ayuda.
Saludos

Iris


error_postcontroles_equiv_fce.png

error_postcontroles_equiv_fce.png

fx_pos_ctrl_equivalencias.sql (13 KB)

Entonces la diferencia la da en las actividades extracurriculares que se informan en sga_reconocimiento y sga_reconocimiento_act

Fijate si esta consulta devuelve registros. Si devuelve son las actividades extracurriculares que no se pasaron a G3.

-- Guarani 2
SELECT 
mig.sga_activ_alumno.resol_actividades,
mig.sga_activ_alumno.unidad_academica,
mig.sga_activ_alumno.carrera,
mig.sga_activ_alumno.legajo,
mig.sga_activ_alumno.actividad,
mig.sga_activ_alumno.fecha
FROM mig.sga_resol_activ
JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                            mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                            mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                            mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                            mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                            mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                               mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                               mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
 	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
EXCEPT 
-- Guarani 3
SELECT m_r.resol_actividades,
alu.unidad_academica, alu.carrera, alu.legajo, e.codigo as materia, r.fecha
FROM sga_reconocimiento as r 
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento
JOIN mig._cnv_pk_reconocimiento as m_r ON m_r.nro_tramite = m_r.nro_tramite

Y corre esta otra sin recuperar el dato resol_actividades:

-- Guarani 2
SELECT 
mig.sga_activ_alumno.unidad_academica,
mig.sga_activ_alumno.carrera,
mig.sga_activ_alumno.legajo,
mig.sga_activ_alumno.actividad,
mig.sga_activ_alumno.fecha
FROM mig.sga_resol_activ
JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                            mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                            mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                            mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                            mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                            mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                               mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                               mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
 	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
EXCEPT 
-- Guarani 3
SELECT alu.unidad_academica, alu.carrera, alu.legajo, e.codigo as materia, r.fecha
FROM sga_reconocimiento as r 
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento

¿Que valores retornan las siguientes consultas?

1) 
SELECT filas FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_act';

2) 
SELECT count(*)
FROM sga_reconocimiento as r 
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento
JOIN mig._cnv_pk_reconocimiento as m_r ON m_r.nro_tramite = m_r.nro_tramite

2) SELECT count(*)
FROM sga_reconocimiento as r 
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento
JOIN mig._cnv_pk_reconocimiento as m_r ON m_r.nro_tramite = m_r.nro_tramite
WHERE m_r.origen = 'EXTRACURRICULAR';

4) 
SELECT count(*)
FROM sga_reconocimiento as r
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento
JOIN mig._cnv_pk_reconocimiento as m_r ON m_r.nro_tramite = m_r.nro_tramite
WHERE r_act.homologada = 'N';

5) 
SELECT count(*)
FROM sga_reconocimiento as r 
JOIN mig._cnv_pk_alumnos as alu ON alu.alumno = r.alumno
JOIN sga_reconocimiento_act as r_act  on r_act.nro_tramite = r.nro_tramite
JOIN mig._cnv_pk_elementos as e ON e.elemento = r_act.elemento;