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
- Ve al lugar de trabajo de Wrangler en Cloud Data Fusion.
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 datosdecimal
. 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 aBigDecimal
, 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
oDOUBLE
.
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 llamadaoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Para una base de datos o una conexión con BigQuery, si la tabla
tiene una columna decimal, Wrangler la convierte en un tipo
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?
- Obtén más información sobre las directivas de Wrangler.