Error al migrar equivalencias - post contorles

Envio el archivo de pos-controles. Actualiza la funcion en la base, ejecutalo y enviá el resultado.
Saludos.


fx_pos_ctrl_equivalencias.sql (11.8 KB)

Hola Alejandro
Ahora da otros errores…
Va en adjunto.
Iris


resultado_post_controles_eqiv.png

resultado_post_controles_eqiv.png

Los dos primeros que dan error estaba mal el control, pero si miras dan iguales los nros de G2 y G3.

El que da diferente es el de las actividades extracurriculares.
¿Estan migrando las actividades extracurriculares como actividades dentro del plan de estudios, no?
Por lo que veo que se esta completando la tabla sga_reconocimiento_act


¿Que resultados dan estas consultas?

1) 
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_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;

2)
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_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    

3) 
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_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    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   

4) 
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_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    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo;

5)
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_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    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo;

6)
SELECT count(*)
   FROM mig._cnv_pk_reconocimiento as cnv_r
    JOIN sga_reconocimiento as r ON r.nro_tramite = cnv_r.nro_tramite
    JOIN mig.sga_resol_activ ON mig.sga_resol_activ.unidad_academica  = cnv_r.unidad_academica  AND 
                                mig.sga_resol_activ.resol_actividades = cnv_r.resol_actividades
    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    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo
    WHERE cnv_r.origen = 'EXTRACURRICULAR'
	  AND m_alu.alumno = r.alumno


Hola Alejandro
Tenés razón, los controles sobre las tablas sga_equiv_internas y sga_equiv_externas son consistentes.
Las actividades extracurriculares las estamos migrando con el parámetro actividades_extracur = 1, es decir como elementos.

Las 6 consultas retornan siempre la misma cantidad de registros: 47825 (no es el valor obtenido ni en cant_g2 ni en cant_g3, sino uno intermedio).

Iris

Esta consulta debería ser la que cuente actividades extracurriculares otorgadas en G2:

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_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 ;

Hola Alejnadro
Esa consulta también devuelve 47825 registros.
Debería reemplazarla en algún lado del script de postcontrol?
Igual, cant_g3 tiene otro valor (46478)
Por qué puede ser la diferencia de 1347?
Gracias!
Iris

Te envio el poscontrol nuevamente.


fx_pos_ctrl_equivalencias.sql (13 KB)

Hola Alejandro
Te envío captura del la nueva ejecución con el scripts que enviaste.
Sigue estando la diferencia de 1347 registros.
Quisiera al menos poder identificar cuáles son, para analizar el motivo, y estar tranquila de no estar perdiendo información importante…
Cómo puedo reconocerlos?
Gracias!

Iris


error_postcontroles_equiv.png

error_postcontroles_equiv.png

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