SELECT * FROM sga_alumnos
WHERE persona IN
(SELECT persona FROM mdp_personas
EXCEPT
SELECT persona FROM mdp_datos_censales);
Aún me falta identificar el porqué de la diferencia en los postcontroles del módulo 20_Datos Censales.
Gracias por la orientación que puedan darme.
Saludos
Esto se da en una 2da/3er/… migracion, no es la primera porque veo que la tabla mig._tablas_g3 tiene registros con lo cual no es la primer migracion.
Puede ser que el registro de persona de “Toba” este dando esta diferencia porque no deberia considerarlo si es la primer migracion, y si considerarlo si es una 2da/3er/… migracion ya que en este caso ese dato del usuario de toba estará contabilizado en la tabla mig._tablas_g3 que es la que se registran datos antes de comenzar a migrar, datos que ya estan en la base de G3 por migracion previa.
Adjunto el archivo de controles.
Fiajte de crear la funcion en la base, reemplaza
SET search_path = ${pg_esquema};
por
SET search_path = negocio;
Luego crea la funcion y ejecutala y veamos que devuelve:
Hola Alejandro
Si, como te explicaba, es una 2da base la que estoy migrando.
Ya había tenido en cuenta no considerar el usuario toba.
Pero así y todo sigue habiendo la diferencia de 1 dato censal.
Esto es lo que retorna la ejecución de la función que me pasaste:
[tr]
[td]tabla[/td][td]resultado[/td][td]cant_g2[/td][td]cant_g3[/td]
[/tr][tr]
[td]mdp_datos_censales[/td][td]OK: Cantidad de datos_censales…[/td][td]9.018[/td][td]9.018[/td]
[/tr][tr]
[td]mdp_datos_personales[/td][td]ERROR: la Cantidad de datos_personales no coinciden…[/td][td]9.018[/td][td]9.019[/td]
[/tr][tr]
[td]mdp_datos_actividades[/td][td]ERROR: la Cantidad de datos_actividades no coinciden…[/td][td]9.018[/td][td]9.019[/td]
[/tr][tr]
[td]mdp_datos_economicos[/td][td]ERROR: la Cantidad de datos_economicos no coinciden…[/td][td]9.018[/td][td]9.019[/td]
[/tr]
Sigo sin identificar a cuál corresponde y el por qué.
Gracias por la paciencia!!
Saludos
Veamos que persona tiene dos registros en mdp_datos_personales, mdp_datos_economicos y mdp_datos_actividades
SELECT dc.persona, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_personales as dp ON dp.dato_censal = dc.dato_censal
GROUP BY dc.persona
HAVING COUNT(*) > 1;
SELECT dc.persona, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_actividades as da ON da.dato_censal = dc.dato_censal
GROUP BY dc.persona
HAVING COUNT(*) > 1;
SELECT dc.persona, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_economicos as de ON de.dato_censal = dc.dato_censal
GROUP BY dc.persona
HAVING COUNT(*) > 1;
SELECT dc.dato_censal, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_personales as dp ON dp.dato_censal = dc.dato_censal
GROUP BY dc.dato_censal
HAVING COUNT(*) > 1;
SELECT dc.dato_censal, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_actividades as da ON da.dato_censal = dc.dato_censal
GROUP BY dc.dato_censal
HAVING COUNT(*) > 1;
SELECT dc.dato_censal, count(*)
FROM mdp_datos_censales as dc
JOIN mdp_datos_economicos as de ON de.dato_censal = dc.dato_censal
GROUP BY dc.dato_censal
HAVING COUNT(*) > 1;
Puede ser que un dato censal este dos veces para una misma persona
Si, creo que esta mal el insert que carga datos en la tabla mig._tablas_g3
Archivo \02_Modulos\01_TablasConversionPK\02_app_migracion.sql
Adjunto este archivo. Reemplazalo y vovlve a migrar hasta el modulo de datos censales.
Tengo un problema similar al mencionado en este post pero en mi caso son varios registros.
Pos_Controles_Datos_Censales01
mdp_datos_censales ERROR: la Cantidad de datos_censales no coinciden… 8.366,00 8.379,00
mdp_datos_personales ERROR: la Cantidad de datos_personales no coinciden… 8.366,00 8.379,00
mdp_datos_actividades ERROR: la Cantidad de datos_actividades no coinciden… 8.366,00 8.379,00
mdp_datos_economicos ERROR: la Cantidad de datos_economicos no coinciden… 8.366,00 8.379,00
Pos_Controles_Personas
mdp_personas_contactos ERROR: Cantidad de personas contactos no coinciden… 15.379,00 15.194,00
En nuestro caso nos encontramos en la versión 3.19.1, y ya tenemos 2 facultades en producción.
Como podría identificar los registros que faltan ?
En el primer caso, da que hay mas datos censales migrados que los que habia en G2.
Este script fue actualizado este año, seguramente no tienen la ultima version ya que estan con los scripts de la vesion 3.19.
Adjunto el script de la ultima version, vean de correrlo nuevamente.
1) Cantidad en G2
SELECT count(distinct msp.nro_inscripcion)
FROM mig._cnv_pk_personas as mcp,
JOIN mig.sga_datos_censales as msp ON mcp.unidad_academica = msp.unidad_academica AND mcp.nro_inscripcion = msp.nro_inscripcion
WHERE mcp.migrar = 1
AND mcp.migrar_datos_censales = 1;
2)
SELECT count(distinct msp.nro_inscripcion) FROM mig.sga_datos_censales;
3)
SELECT count(distinct msp.nro_inscripcion)
FROM mig._cnv_pk_personas as mcp,
JOIN mig.sga_datos_censales as msp ON mcp.unidad_academica = msp.unidad_academica AND mcp.nro_inscripcion = msp.nro_inscripcion
WHERE mcp.migrar = 1;
4) Cantidad en G3
SELECT count(*) , count(distinct persona) FROM mdp_datos_censales WHERE persona <> 1;
5) Registros ya existentes en la base de G3
SELECT filas FROM mig._tablas_g3 where tabla = 'mdp_datos_censales';
Hola Alejandro! gracias por tu respuesta, no veo cambios en el script que me pasaste con el que esta actualmente en en la versión 3.19.1, cambio algo ? Por otro lado el error que me da es en datos censales pos controles 01 y vos me pasaste del 02, te lo comento por si te confundiste.
Te comparto las salidas obtenidas de las consultas que me enviaste:
Cantidad en G2 8366
8766
8366
Cantidad en G3 37712 37712
Registros ya existentes en la base de G3 29333
Por lo que entiendo se resta lo que hay en g3 menos lo que había en g3 y se compara con lo que habia en g2 no?
En cuyo caso me da
g3 = 37712 - 29333 = 8379
g2 = 8366
Lo cual es la salida que me da el migrador actualmente con el respectivo error por las diferencias
Tuve que cambiar la columna persona de la consulta que me enviaste por “nro_inscripcion” porque en g2 no esta esa columna en la tabla mig.sga_personas
SELECT COUNT(*)
FROM mig.sga_personas
WHERE NOT EXISTS (
SELECT 1
FROM mig.sga_datos_censales as dc
WHERE dc.nro_inscripcion = mig.sga_personas.nro_inscripcion
)
Adjunto los archivos de controles de migracion de datos censales, son los ultimos publicados. Version 3.20.x
Estan en la carpeta \02_Modulos\20_Datos Censales\03_Pos_Controles
Por favor proba con estos y envianos el resultado.
Por favor corre estas querys… fijate si alguna devuelve datos, en particular la primera porque es la que veremos si hay personas con registro de datos censales que no estan en Guarani 2. Es raro porque no se podrian inventar datos censales. Seguramente esta mal la query en el pos-control
-- Query 1. Datos censales de personas en G3 que no estan en G2
SELECT mp.unidad_academica, mp.nro_inscripcion
FROM mig._cnv_pk_personas as mp
JOIN mdp_personas as p ON p.persona = mp.persona
JOIN mdp_datos_censales as dc ON dc.persona = p.persona
EXCEPT
SELECT unidad_academica, nro_inscripcion
FROM mig.sga_datos_censales;
-- Query 2. Datos censales de personas en G2 que no existen en G3.
SELECT DISTINCT unidad_academica, nro_inscripcion
FROM mig.sga_datos_censales
EXCEPT
SELECT mp.unidad_academica, mp.nro_inscripcion
FROM mig._cnv_pk_personas as mp
JOIN mdp_personas as p ON p.persona = mp.persona
JOIN mdp_datos_censales as dc ON dc.persona = p.persona;
Hola Alejandro, perdón por la tardanza, ninguna de las dos consultas me devolvió resultados.
Es raro la verdad, pero si, no creo que el migrador invente datos, debe ser un problema de como se están controlado los post controles