Esta página explica como converter campos em decimais e fazer transformações nos mesmos quando prepara dados no espaço de trabalho do Wrangler do Cloud Data Fusion Studio.
Ler dados decimais
- Aceda ao espaço de trabalho do Wrangler no Cloud Data Fusion.
Abra um objeto, como uma tabela, a partir de uma base de dados ou de um ficheiro do Cloud Storage.
- Para uma base de dados ou uma ligação ao BigQuery, se a tabela tiver uma coluna decimal, o Wrangler converte-a num tipo
BigDecimal
. Quando cria o pipeline a partir do Wrangler, a coluna é convertida no tipo de dadosdecimal
. Se o seu conjunto de dados contiver dados não decimais que quer converter em decimais, use a diretiva
set-column
:set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
Substitua o seguinte:
DECIMAL_COLUMN
: a coluna decimal a ser transformada. Após a execução da diretiva, o tipo de dados da coluna é alterado paraBigDecimal
, e o esquema também contém o tipo de dados adequado.INPUT_COLUMN
: a coluna que é convertida, que pode ser de 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 à seguinte:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
O exemplo seguinte converte uma coluna denominada
cost
de uma string para um decimal, define uma escala de 9 e envia os resultados para uma nova coluna denominadaoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Para uma base de dados ou uma ligação ao BigQuery, se a tabela tiver uma coluna decimal, o Wrangler converte-a num tipo
Transforme dados decimais
As colunas decimais no Wrangler usam a classe Java BigDecimal.
Depois de as colunas serem convertidas no tipo de dados BigDecimal, transforme as colunas com métodos de Class BigDecimal
.
Transformação | Diretiva |
---|---|
Obtenha o valor absoluto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs() |
Obtenha a precisão de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision() |
Obtenha a escala de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale() |
Obtenha o valor não dimensionado de um valor decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue() |
Adicione duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2) |
Subtraia 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) |
Divida uma coluna decimal por outra e devolva o quociente | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2) |
Divida uma coluna decimal por outra e devolva o resto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2) |
Converter decimal num número inteiro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue() |
Converter decimal num número inteiro longo | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
Converta um número decimal num número de vírgula flutuante | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
Converter decimal num número de vírgula flutuante de precisão dupla | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
Verifique se um valor decimal é igual a outro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
Encontre o máximo de duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
Encontre o mínimo de duas colunas decimais | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2) |
Mover a vírgula decimal n casas decimais para a esquerda | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n) |
Mover o ponto decimal n casas para a direita | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n) |
Calcular a potência n 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() |
Remova os zeros à direita num número decimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros() |
Substitua o seguinte:
OUTPUT_COLUMN
: a coluna que contém o resultado da operação.DECIMAL_COLUMN
: a coluna decimal que é transformada.DECIMAL_COLUMN_2
: a segunda coluna decimal incluída na operação, como quando adiciona os valores de duas colunas decimais.
O que se segue?
- Saiba mais acerca das diretivas do Wrangler.