domingo, 15 de septiembre de 2019

El día sábado 14 de setiembre que algunos de los datos que venían en el XML debía ser validados. Por ejemplo, existían 2 beneficiarios asociados a una cuenta que tenían ambos un 100% de beneficio, incumpliendo la restricción de que suma de todos los porcentajes debe ser menor o igual al 100. Entonces se procedió a investigar cómo filtrar los datos importados desde los XML. Primero se empezó investigando el uso de XQuery para hacer las llamadas XML con ciertos parámetros que permitieran seleccionar solo los campos con las condiciones requeridas pero no hubo mucho fruto, aunque es posible que sí se pueda resolver de ese modo. A la mañana siguiente, se investigó nuevamente el problema y se encontró un video donde se hace un GRUOP BY de un SELECT de los id de una tabla usando la función agregada SUM(<columna>). Con este comando vi la posibilidad de agrupar los campos de la tabla beneficiario por ID según la suma de sus campos porcentaje y ver si exceden el 100%. Esto dio resultados:


También se descubrió que se puede usar la función agregada CONT(<columna>) para verificar que el número de beneficiarios no excede los 3 requeridos como máximo 



Sin embargo para filtrar los datos aún no se sabe cómo hacerlo. Después de investigar por otra hora se descubrió la instrucciones HAVING, que se creó porque no se puede usar funciones agregadas como SUM() en una directiva WHERE. En esta imagen se ve cómo se logra obtener solo los números de cuenta del xml que tienen una suma de porcentaje menor o igual a 100. Esta referencia fue útil https://www.w3schools.com/sql/sql_having.asp


Aquí hubo un lapso de tiempo en el que no se actualizó más el blog, se reconoce el error. Pero al final sí se logró resolver el problema. Después de todo ni siquiera existía porque en una consulta al grupo/foro de WhatsApp del curso se vio que había un archivo más reciente que corregía el error que requería la validación.
























No hay comentarios:

Publicar un comentario