Nesta página, explicamos como converter campos em decimais e realizar transformações neles ao preparar dados no espaço de trabalho do Wrangler do estúdio do Cloud Data Fusion.
Ler dados decimais
- Acesse o espaço de trabalho do Wrangler no Cloud Data Fusion.
Abra um objeto, como uma tabela, de um banco de dados ou um arquivo do Cloud Storage.
- Para um banco de dados ou uma conexão do BigQuery, se a tabela
tiver uma coluna decimal, o Wrangler a converterá em um tipo
BigDecimal
. Quando você cria o pipeline no Wrangler, a coluna é convertida em o tipo de dadosdecimal
. Se o conjunto de dados contiver dados não decimais para os quais você quer converter decimais, use a diretiva
set-column
:set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
Substitua:
DECIMAL_COLUMN
: a coluna decimal a ser transformados. Depois que a diretiva é executada, o tipo de dados da coluna muda paraBigDecimal
, e o esquema também contém o tipo de dados apropriado.INPUT_COLUMN
: a coluna que é convertida, que pode ser um dos seguintes tipos:STRING
,INTEGER
,LONG
,FLOAT
ouDOUBLE
.
Se o conjunto de dados incluir valores com escalas variáveis, como 1,05, 2,698, 5,8745512, defina a escala com uma diretiva do Wrangler e edite o esquema no pipeline para definir a escala da coluna decimal.
Para definir a escala no Wrangler, use uma diretiva semelhante a esta:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
O exemplo a seguir converte uma coluna chamada
cost
de uma string em um decimal, define uma escala de 9 e gera os resultados em uma nova coluna chamadaoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Para um banco de dados ou uma conexão do BigQuery, se a tabela
tiver uma coluna decimal, o Wrangler a converterá em um tipo
Transformar dados decimais
As colunas decimais no Wrangler usam a classe BigDecimal em Java.
Depois que as colunas forem convertidas no tipo de dados BigDecimal, transforme as colunas com métodos de Class BigDecimal
.
Transformação | Diretiva |
---|---|
Conferir o valor absoluto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs() |
Conferir a precisão de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision() |
Conseguir a escala de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale() |
Conseguir o valor não dimensionado de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue() |
Adicionar duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2) |
Subtrair um número decimal de outro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2) |
Multiplicar um número decimal por outro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2) |
Dividir uma coluna decimal por outra e retornar o quociente | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2) |
Dividir uma coluna decimal por outra e retornar o resto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2) |
Converter decimal em um número inteiro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue() |
Converter decimal em um número longo | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
Converter decimal em flutuante | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
Converter decimal em duplo | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
Verificar se um valor decimal é igual a outro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
Encontrar o máximo de duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
Encontrar o mínimo de duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2) |
Mover o ponto decimal n casas para a esquerda | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n) |
Mova o ponto decimal n casas para a direita | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n) |
Extrair a enésima potência de um número decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n) |
Negar um decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate() |
Remover zeros finais em um número decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros() |
Substitua:
OUTPUT_COLUMN
: a coluna que contém a saída do operaçãoDECIMAL_COLUMN
: a coluna decimal que é transformada.DECIMAL_COLUMN_2
: a segunda coluna decimal incluída na operação, como quando você adiciona os valores de duas colunas decimais juntos.
A seguir
- Saiba mais sobre as diretivas do Wrangler.