Trabalhar com dados decimais

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

  1. Acesse o espaço de trabalho do Wrangler no Cloud Data Fusion.
  2. 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 dados decimal.
    • 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 para BigDecimal, 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 ou DOUBLE.

    • 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 chamada output-column:

      set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
      

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çã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