Trabajar con datos decimales

En esta página se explica cómo convertir campos en decimales y realizar transformaciones en ellos al preparar datos en el espacio de trabajo Wrangler de Cloud Data Fusion Studio.

Leer datos decimales

  1. Ve al espacio de trabajo de Wrangler en Cloud Data Fusion.
  2. Abre un objeto, como una tabla, de una base de datos o un archivo de Cloud Storage.

    • En el caso de una base de datos o una conexión de BigQuery, si la tabla tiene una columna decimal, Wrangler la convierte en un tipo BigDecimal. Cuando creas la canalización desde Wrangler, la columna se convierte al tipo de datos decimal.
    • Si su conjunto de datos contiene datos no decimales que quiere convertir en decimales, use la directiva set-column:

      set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
      

      Haz los cambios siguientes:

      • DECIMAL_COLUMN: la columna decimal que se va a transformar. Una vez que se ejecuta la directiva, el tipo de datos de la columna cambia a BigDecimal y el esquema también contiene el tipo de datos adecuado.

      • INPUT_COLUMN: la columna que se convierte, que puede ser de uno de los siguientes tipos: STRING, INTEGER, LONG, FLOAT o DOUBLE.

    • Si tu conjunto de datos incluye valores con escalas diferentes, como 1,05, 2,698 o 5,8745512, define la escala con una directiva de Wrangler y edita el esquema en la canalización para definir la escala de la columna decimal.

      Para definir la escala en Wrangler, usa una directiva similar a la siguiente:

      set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
      

      En el siguiente ejemplo se convierte una columna llamada cost de una cadena a un decimal, se establece una escala de 9 y se muestran los resultados en una nueva columna llamada output-column:

      set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
      

Transformar datos decimales

Las columnas decimales de Wrangler usan la clase BigDecimal de Java. Una vez que las columnas se hayan convertido al tipo de datos BigDecimal, transfórmalas con métodos de Class BigDecimal.

Transformación Directive
Obtener el valor absoluto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs()
Obtener la precisión de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision()
Obtener la escala de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale()
Obtener el valor sin escalar de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue()
Añadir dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2)
Restar un decimal de otro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2)
Multiplicar un decimal por otro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2)
Dividir una columna decimal entre otra y devolver el cociente set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2)
Divide una columna decimal entre otra y devuelve el resto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2)
Convertir un decimal en un entero set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue()
Convertir un decimal en un valor largo set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue()
Convertir un decimal en un número de coma flotante set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue()
Convertir un decimal en un valor de doble precisión set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue()
Comprueba si un valor decimal es igual a otro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2)
Hallar el máximo de dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2)
Hallar el mínimo de dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2)
Mueve el punto decimal n posiciones hacia la izquierda set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n)
Mueve la coma decimal n posiciones hacia la derecha. set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n)
Hallar la potencia n-ésima de un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n)
Negar un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate()
Eliminar los ceros finales de un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros()

Haz los cambios siguientes:

  • OUTPUT_COLUMN: la columna que contiene el resultado de la operación.
  • DECIMAL_COLUMN: la columna decimal que se transforma.
  • DECIMAL_COLUMN_2: la segunda columna decimal incluida en la operación, como cuando sumas los valores de dos columnas decimales.

Siguientes pasos