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,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 à seguinte:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}O exemplo seguinte converte uma coluna denominada
costde 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.