Trabalhe com dados decimais

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

  1. Aceda ao espaço de trabalho do Wrangler no Cloud Data Fusion.
  2. 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 dados decimal.
    • 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 para BigDecimal, 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 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 à 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 denominada output-column:

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

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?