Primero corremos la siguiente query en busca de duplicados
SELECT
tarea_id,
origen,
COUNT() AS cantidad
FROM aux.instalaciones_terceros
GROUP BY
tarea_id,
origen
HAVING COUNT() > 1
ORDER BY
cantidad DESC,
tarea_id,
origen;
No arroja duplicados, por lo que el duplicado se genera en la consulta de origen, antes de insertar.
El siguiente paso es comprobar cuántas filas produce la consulta para WOT0095176:
SELECT
i.task_id AS tarea_id,
COUNT(*) AS cantidad
FROM sn.metric m
JOIN sn.instance i
ON i.number = m.instance
JOIN sn.task t
ON t.number = i.task_id
LEFT JOIN cm.ci_sfat_mfat_bfat c
ON c.nombre_cliente = t.cmdb_ci
LEFT JOIN cm.municipio muni
ON ST_Contains(
muni.geom,
ST_SetSRID(
ST_MakePoint(
c.longitud,
c.latitud
),
4326
)
)
WHERE m.metric ILIKE '%CTO DE TERCEROS EN CUADRA%'
AND m.metric_definition = 'Si'
AND c.latitud IS NOT NULL
AND c.longitud IS NOT NULL
AND i.task_id = 'WOT0095176'
GROUP BY
i.task_id;
Esta query me arroja que tengo dos elementos como resultado.
La siguiente query nos ayuda a entender que sucede
SELECT
i.task_id AS tarea_id,
m.instance,
m.metric,
m.metric_definition,
m.sys_created_on,
t.cmdb_ci,
c.nombre_cliente,
c.id_cm,
c.latitud,
c.longitud,
muni.nam AS partido
FROM sn.metric m
JOIN sn.instance i
ON i.number = m.instance
JOIN sn.task t
ON t.number = i.task_id
LEFT JOIN cm.ci_sfat_mfat_bfat c
ON c.nombre_cliente = t.cmdb_ci
LEFT JOIN cm.municipio muni
ON ST_Contains(
muni.geom,
ST_SetSRID(
ST_MakePoint(
c.longitud,
c.latitud
),
4326
)
)
WHERE m.metric ILIKE '%CTO DE TERCEROS EN CUADRA%'
AND m.metric_definition = 'Si'
AND c.latitud IS NOT NULL
AND c.longitud IS NOT NULL
AND i.task_id = 'WOT0095176'
ORDER BY
m.sys_created_on,
c.id_cm,
muni.nam;
El resultado me da dos lineas identicas
WOT0095176 AINST0070708 ¿CTO DE TERCEROS EN CUADRA? - GPON 1_2_2.5 Si 2026-08-27 12:11:13.000 GCAS-R0745-007 GCAS-R0745-007 GCAS0201-SFAT-02-002023-0002 -34.579736 -58.592286 Tres de Febrero
Lo que debo hacer ahora es ver si esos dos registros ya vienen de sn.metric
SELECT
m.*
FROM sn.metric m
JOIN sn.instance i
ON i.number = m.instance
WHERE i.task_id = 'WOT0095176'
AND m.metric ILIKE '%CTO DE TERCEROS EN CUADRA%'
AND m.metric_definition = 'Si'
ORDER BY
m.instance,
m.sys_created_on;
El duplicado ya existe en sn.metric para la misma instancia. La tabla destino está funcionando correctamente al rechazarlo.