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
- Ve al espacio de trabajo de Wrangler en Cloud Data Fusion.
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 datosdecimal
. 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 aBigDecimal
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
oDOUBLE
.
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 llamadaoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- 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
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.