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