Cómo trabajar con datos decimales

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

Cómo leer datos decimales

  1. Ve al espacio de trabajo de Wrangler en Cloud Data Fusion.
  2. Abrir 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 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 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 el tipo de datos apropiado.

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

    • Si tu conjunto de datos incluye valores con escalas variables, como 1.05, 2.698, 5.8745512, establece la escala con una directiva de Wrangler y edita el esquema en la canalización para establecer 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)}
      

Transforma datos decimales

Las columnas decimales en Wrangler usan la clase BigDecimal de Java. Después de que las columnas se conviertan al tipo de datos BigDecimal, transfórmalas 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()
Agrega dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2)
Cómo restar un decimal de otro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2)
Multiplica un decimal por otro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2)
Dividir una columna decimal por otra y mostrar 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)
Convierte un decimal en un número entero set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue()
Convierte un decimal en un número largo set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue()
Convierte un número decimal en un número de punto flotante set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue()
Convierte un decimal en un número 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)
Encuentra el máximo de dos columnas decimales set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2)
Encuentra 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 el punto decimal n posiciones 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 de un número 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: Es la segunda columna decimal incluida en la operación, como cuando sumas los valores de dos columnas decimales.

¿Qué sigue?