IBM DataStage: Truncate decimales en división

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.

Job dummy con un transformer

Si ejecutamos la tarea se produce el error:

Error de precisión en el cálculo

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

What is 10 + 3 ?
Please leave these two fields as-is: