Recientemente nos ha surgido una incidencia en un job de IBM DataStage en el que un Transformer divide dos valores decimales con 20 dígitos de precisión y el resultado de la operación sólo muestra los primeros 10, los otros 10 los deja a 0. El responsable de este comportamiento es la variable de entorno APT_DECIMAL_INTERM_SCALE de DataStage. Si observamos la documentación oficial:
The APT_DECIMAL_INTERM_SCALE environment variable specifies the default scale value for any decimal intermediate variables that are required in calculations.
The default value for the APT_DECIMAL_INTERM_SCALE environment variable is 10.
IBM Documentation
Lo que especifica esta variable es la precisión de los valores decimales intermedios que participan en cualquier cálculo, que por defecto es 10. En nuestro caso dummy, recibimos una columna con más de 10 dígitos de precisión en la parte decimal y la vamos a dividir entre 10.
Si ejecutamos la tarea se produce el error:
Solución
La solución pasa por modificar la variable de entorno para que cumpla nuestras necesidades, en este caso, que la precisión sea de 20. En los parámetros del job seleccionamos la variable de entorno $APT_DECIMAL_INTERM_SCALE y actualizamos el default value a 20.
Y vemos el resultado final:
Más info | Dsxchange