Trabajar con datos decimales

En esta página, se explica cómo convertir campos en decimales en ellos cuando prepares datos en el lugar de trabajo de Wrangler de la Cloud Data Fusion Studio.

Cómo leer datos decimales

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

    • Para una base de datos o una conexión con 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 en el tipo de datos decimal.
    • Si tu conjunto de datos contiene datos no decimales que deseas convertir a decimales, usa la directiva set-column:

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

      Reemplaza lo siguiente:

      • DECIMAL_COLUMN: Es la columna decimal que se transformará. Después de que se ejecuta la directiva, el tipo de datos de la columna cambia a BigDecimal, y el esquema también contiene las el tipo de datos adecuado.

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

    • Si tu conjunto de datos incluye valores con escala variable, como 1.05, 2.698, 5.8745512, establece la escala con una directiva Wrangler y edita esquema en la canalización para configurar la escala de la columna decimal.

      Para establecer 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 columna nueva llamada output-column:

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

Cómo transformar datos decimales

Las columnas decimales en Wrangler usan la clase BigDecimal de Java. Después de convertir las columnas al tipo de datos BigDecimal, transforma la columnas con métodos de Class BigDecimal.

Transformación Directiva
Obtén el valor absoluto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs()
Cómo obtener la precisión de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision()
Obtén la escala de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale()
Obtén el valor sin escala de un valor decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue()
Sumar dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2)
Resta 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 por otra y obtener el cociente set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2)
Divide una columna decimal por otra y muestra el resto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2)
Convertir decimal en número entero set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue()
Convertir decimal en largo set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue()
Convertir decimal en número de punto flotante set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue()
Convertir decimal a doble 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)
Encontrar el máximo de dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2)
Encontrar 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)
Mover el punto decimal n lugares hacia la derecha set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n)
Obtener la enésima potencia de un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n)
Negar un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate()
Quita los ceros finales en un decimal set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros()

Reemplaza lo siguiente:

  • OUTPUT_COLUMN: La columna que contiene el resultado de la operación.
  • DECIMAL_COLUMN: Es 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 entre sí.

¿Qué sigue?