Lavorare con i dati decimali

Questa pagina spiega come convertire i campi in decimali ed eseguire su di essi trasformazioni quando prepari i dati nello spazio di lavoro Wrangler di Studio di Cloud Data Fusion.

Leggere i dati decimali

  1. Vai allo spazio di lavoro Wrangler in Cloud Data Fusion.
  2. Apri un oggetto, ad esempio una tabella, da un database o da un file Cloud Storage.

    • Per un database o una connessione BigQuery, se la tabella contiene una colonna decimale, Wrangler la converte in un tipo BigDecimal. Quando crei la pipeline da Wrangler, la colonna viene convertita nel tipo di dati decimal.
    • Se il set di dati contiene dati non decimali che vuoi convertire in decimali, utilizza la direttiva set-column:

      set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
      

      Sostituisci quanto segue:

      • DECIMAL_COLUMN: la colonna decimale da trasformare. Dopo l'esecuzione della direttiva, il tipo di dati della colonna diventa BigDecimal e lo schema contiene anche il tipo di dati appropriato.

      • INPUT_COLUMN: la colonna che viene convertita, che può essere uno dei seguenti tipi: STRING, INTEGER, LONG, FLOAT o DOUBLE.

    • Se il set di dati include valori con scale diverse, ad esempio 1,05, 2,698, 5,8745512, imposta la scala con una direttiva Wrangler e modifica lo schema nella pipeline per impostare la scala per la colonna decimale.

      Per impostare la scala in Wrangler, utilizza un'istruzione simile alla seguente:

      set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
      

      Il seguente esempio converte una colonna denominata cost da una stringa a un valore decimale, imposta una scala di 9 e restituisce i risultati in una nuova colonna denominata output-column:

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

Trasformare i dati decimali

Le colonne decimali in Wrangler utilizzano la classe BigDecimal di Java. Dopo aver convertito le colonne nel tipo di dati BigDecimal, trasformale con i metodi di Class BigDecimal.

Trasformazione Direttiva
Ottenere il valore assoluto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs()
Ottenere la precisione di un valore decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision()
Ottenere la scala di un valore decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale()
Ottenere il valore non scalato di un valore decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue()
Aggiungere due colonne decimali set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2)
Sottrarre un numero decimale da un altro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2)
Moltiplicare un decimale con un altro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2)
Dividere una colonna decimale per un'altra e restituire il quoziente set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2)
Dividere una colonna decimale per un'altra e restituire il resto set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2)
Convertire un numero decimale in un numero intero set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue()
Convertire un numero decimale in un numero lungo set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue()
Convertire un numero decimale in un numero con virgola mobile set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue()
Convertire un numero decimale in un numero doppio set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue()
Controlla se un valore decimale è uguale a un altro set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2)
Trovare il massimo di due colonne decimali set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2)
Trovare il minimo di due colonne decimali set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2)
Sposta la virgola decimale di n posizioni a sinistra set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n)
Sposta la virgola decimale di n posizioni a destra set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n)
Ottenere l'ennesima potenza di un decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n)
Negare un numero decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate()
Rimuovere gli zeri finali in un numero decimale set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros()

Sostituisci quanto segue:

  • OUTPUT_COLUMN: la colonna contenente l'output dell'operazione.
  • DECIMAL_COLUMN: la colonna decimale che viene trasformata.
  • DECIMAL_COLUMN_2: la seconda colonna decimale inclusa nell'operazione, ad esempio quando aggiungi i valori di due colonne decimali.

Passaggi successivi