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 Cloud Data Fusion Studio.
Ler dados decimais
- Acesse o espaço de trabalho do Wrangler no Cloud Data Fusion.
Abrir um objeto, como uma tabela, em um banco de dados ou em 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 vai convertê-la em um tipo
BigDecimal. Quando você cria o pipeline no Wrangler, a coluna é convertida para o tipo de dadosdecimal. Se o conjunto de dados tiver dados não-decimais que você quer converter em 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 transformada. 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,FLOATouDOUBLE.
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
costde uma string para 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 vai convertê-la em um tipo
Transformar dados decimais
As colunas decimais no Wrangler usam a classe BigDecimal do 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 valor 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 a vírgula 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) |
| Receber a enésima potência de um número decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n) |
| Negar um número 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 da operação.DECIMAL_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.