No tengo ningún documento que compartir sobre estos bucles anidados y ya no formo parte del equipo del proyecto, por lo que todo lo que puedo decir al respecto se me viene a la cabeza. Así que espero que entiendas por qué no puedo contar demasiados detalles aquí.
Básicamente, tuve que realizar tres tipos diferentes de búsqueda en la misma tabla para una llamada Regla personalizada en el software de Administración de datos de prueba (TDM). Estas Reglas personalizadas se implementan como mapplets y deben contener únicamente transformaciones pasivas. Sin enrutadores, sin filtros, sin agregadores, sin transformaciones Java activas, solo Expresiones, transformaciones de búsqueda y similares.
Ahora, para las dos Reglas personalizadas más complejas, tuve que implementar varias tablas auxiliares que contenían esos datos de búsqueda en diferentes niveles de agregación. Rellenar estas tablas desde PowerCenter no fue demasiado fácil porque el archivo de origen consta de 4,5 GB de texto (app. 43 millones de registros); las tablas de búsqueda contienen datos en tres niveles diferentes de agregación con diferentes criterios de búsqueda. Y no quería dividir el mapa en tres. Así que tuve que preocuparme por la identificación del registro basado en «el mismo» por mi cuenta, no podía usar Agregadores solo.
Por lo que recuerdo, en un lenguaje de programación tradicional como Java habría necesitado hasta cinco bucles anidados para analizar los datos de origen y crear los registros de búsqueda respectivos a partir de estos datos de entrada. Ejecutar diferentes niveles de agregación con varios puertos variables en un solo EXP no es demasiado fácil de mantener, pero mis pruebas iniciales han revelado que esta seguía siendo la mejor opción; como mencioné, podría haber dividido el mapeo en tres, pero cada mapeo habría tenido casi el mismo nivel de complejidad que el EXP «general», por lo que no consideré que valiera la pena el esfuerzo de mantener tres rutas de carga diferentes en este mapeo.
Estoy seguro de que todos los que tengan algo de experiencia en PowerCenter pueden, después de pensarlo, inventar una historia similar de requisitos de mapeo no triviales de su propia práctica. Puede que ni siquiera seamos conscientes de tal complejidad, pero sigue ahí.
Como ejemplo, tome un hilo de 2014 o 2015 en el que alguien preguntó cómo generar números primos en PowerCenter. No es muy fácil. Quien construye una solución de este tipo tiene que pensar (y trabajar) fuera de los caminos conocidos. Eso es sin duda un logro extraordinario en PowerCenter. Así que este podría no ser un gran ejemplo, pero puede ser un buen ejemplo de lógica de mapeo más compleja.
Como otro ejemplo, observe cualquier sistema para coordinar la ejecución de flujos de trabajo en un orden determinado. Tal vez con algunas condiciones adicionales, como «número de registros con la propiedad XYZ igual al valor ABC». Todas estas cosas pueden volverse arbitrariamente complejas y, como se mencionó anteriormente, estoy seguro de que muchas personas han construido algo similarmente complejo una o más veces, incluso si no lo reconocieron.